ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
C#で特に重要なキーワードがあり、それがthis
キーワードです。 このキーワードは、それが使用されている現在のクラスインスタンスを指します。 これは、同じ名前を共有するクラスレベルの変数とメソッドのパラメータを区別するために使用されます。 例えば、インスタンス変数とメソッド内の引数が同じ名前の場合、this
は非常に役立ちます。!
パブリッククラス(例えば Employee
)の場合、id
や name
のようなパブリックインスタンス変数を持つことがあります。 これらのインスタンス変数にメソッド内で値を割り当てたい場合、一般的な問題に直面するかもしれません: メソッドのパラメーターがインスタンス変数と同じ名前である場合はどうしますか?
こちらが解決策です:C# ドキュメントの this
キーワード! 以下の例では、public クラス Employee
内のメソッドで、this
キーワードを使用して、同じ名前を持つインスタンス変数とメソッドパラメーターを区別しています。
public void Display(int id, string name)
{
this.id = id;
this.name = name;
}
public void Display(int id, string name)
{
this.id = id;
this.name = name;
}
Public Sub Display(ByVal id As Integer, ByVal name As String)
Me.id = id
Me.name = name
End Sub
この場合、this.id
はインスタンス変数を指し、id
はメソッドパラメータを指します。
this
キーワードthis
キーワードを活用することで、同じクラス内でコンストラクターのオーバーロードが強力な手法となります。 クラス(例えば、student
クラス)が異なるパラメータを持つ複数のコンストラクタを持つ場合、this
キーワードを使用して一方のコンストラクタが他方を呼び出すことができ、冗長なコードを排除することができます。
以下の例では、パラメータ化されたコンストラクタで this
が使用されています。
public class Student
{
private string name;
private int id;
public Student() : this("Default", 0)
{
}
public Student(string name, int id)
{
this.name = name;
this.id = id;
}
}
public class Student
{
private string name;
private int id;
public Student() : this("Default", 0)
{
}
public Student(string name, int id)
{
this.name = name;
this.id = id;
}
}
Public Class Student
Private name As String
Private id As Integer
Public Sub New()
Me.New("Default", 0)
End Sub
Public Sub New(ByVal name As String, ByVal id As Integer)
Me.name = name
Me.id = id
End Sub
End Class
パラメータのないコンストラクタでは、this(「デフォルト」、0)パラメータ化されたコンストラクターを呼び出し、名前とIDに
Default` を設定します。
this
の探求C#の拡張メソッドは、元の型を変更することなく既存の型にメソッドを追加する方法を提供します。 こちらが this
キーワードの魔法が発揮される場所です。 拡張メソッドのパラメーターリストで、拡張されているタイプを参照するために使用されます。
次の拡張メソッドの例を考えてください:
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
}
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
}
Public Module StringExtensions
<System.Runtime.CompilerServices.Extension> _
Public Function IsNullOrEmpty(ByVal str As String) As Boolean
Return String.IsNullOrEmpty(str)
End Function
End Module
ここで、this string str
は、このメソッドが文字列型の拡張メソッドであることをC#に伝えます。 今、このメソッドを任意の文字列オブジェクトに対して使用できます。例えば(myString.IsNullOrEmpty())
.
this
this
キーワードは、インデクサーの定義にも使用できます。 インデクサーにより、クラスのインスタンスを配列のようにインデックス付けすることができます。 これは、インデックスのような表記法を使用してオブジェクト内のデータにアクセスするのに役立ちます。 インデクサでは、this
の後に配列インデックスが続きます。通常はint index
です。
以下はインデクサーの基本的な例です:
public class Test
{
private int [] array = new int [100];
public int this [int index]
{
get { return array [index]; }
set { array [index] = value; }
}
}
public class Test
{
private int [] array = new int [100];
public int this [int index]
{
get { return array [index]; }
set { array [index] = value; }
}
}
Public Class Test
Private array(99) As Integer
Default Public Property Item(ByVal index As Integer) As Integer
Get
Return array (index)
End Get
Set(ByVal value As Integer)
array (index) = value
End Set
End Property
End Class
この Test
クラスでは、this
キーワードがインデクサーを定義し、array
インスタンスフィールドの値を取得または設定するために使用されます。
this
および静的メンバーthis
に関して注意すべきことの一つは、静的メンバーやメソッドを参照するために使用できないということです。 これは、this
が現在のインスタンスを指しているためであり、静的メンバーはクラス自体に属していて、クラスのインスタンスには属していないからです。
public class Program
{
public static void Main(string [] args)
{
// Can't use `this` here, because 'Main' is a static method.
}
}
public class Program
{
public static void Main(string [] args)
{
// Can't use `this` here, because 'Main' is a static method.
}
}
Public Class Program
Public Shared Sub Main(ByVal args() As String)
' Can't use `this` here, because 'Main' is a static method.
End Sub
End Class
ですので、this
はインスタンス用であり、クラスレベルや静的メンバー用ではありません。!
this
キーワードとプロパティインスタンス変数やメソッドパラメーターと同様に、this
キーワードはプロパティにも使用できます。 C#では、プロパティはプライベートフィールドの値を読み取り、書き込み、または計算するための柔軟なメカニズムを提供するメンバーです。 プロパティはパブリックデータメンバーのように使用できますが、実際にはアクセサと呼ばれる特殊なメソッドです。
プロパティ内で this
を使用する簡単な例を見てみましょう:
public class Employee
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
}
public class Employee
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
}
Public Class Employee
'INSTANT VB NOTE: The field name was renamed since Visual Basic does not allow fields to have the same name as other class members:
Private name_Conflict As String
Public Property Name() As String
Get
Return Me.name_Conflict
End Get
Set(ByVal value As String)
Me.name_Conflict = value
End Set
End Property
End Class
クラス内では、this
キーワードは Name
プロパティの get アクセサーと set アクセサーで、プライベート文字列 name
を参照するために使用されます。
this
とデリゲートの探求デリゲートに現れる別の場所は this
です。 C#のデリゲートは、CやC++の関数ポインタと似ています。 それはメソッドへの参照を保持する参照型の変数です。 デリゲートメソッドは、拡張メソッドと同様に、this
を使用して現在のインスタンスにアクセスできます。
this
を使用したデリゲートの例です:
public delegate void DisplayDelegate();
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public void Display()
{
DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
displayDelegate();
}
private void DisplayDetails()
{
Console.WriteLine("ID: " + Id + ", Name: " + Name);
}
}
public delegate void DisplayDelegate();
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public void Display()
{
DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
displayDelegate();
}
private void DisplayDetails()
{
Console.WriteLine("ID: " + Id + ", Name: " + Name);
}
}
Public Delegate Sub DisplayDelegate()
Public Class Student
Public Property Id() As Integer
Public Property Name() As String
Public Sub Display()
Dim displayDelegate As New DisplayDelegate(AddressOf Me.DisplayDetails)
displayDelegate()
End Sub
Private Sub DisplayDetails()
Console.WriteLine("ID: " & Id & ", Name: " & Name)
End Sub
End Class
学生クラスでは、this.DisplayDetails
は現在のオブジェクトのDisplayDetails
メソッドを参照するデリゲートの新しいインスタンスを作成します。
this
キーワードの実装以下は、this
キーワードを使用する例についての詳細です。IronPDF強力な .NET ライブラリであるHTMLを使用したPDFファイルの作成.
IronPDF
ライブラリを使用してPDFファイルに対してさまざまな操作を行うPDFHandler
という名前のクラスを考えてみましょう:
using IronPdf;
public class PDFHandler
{
private string path;
public PDFHandler(string path)
{
this.path = path;
}
public void GeneratePDF(string content)
{
var Renderer = new IronPdf.ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(content);
PDF.SaveAs(this.path);
}
}
using IronPdf;
public class PDFHandler
{
private string path;
public PDFHandler(string path)
{
this.path = path;
}
public void GeneratePDF(string content)
{
var Renderer = new IronPdf.ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(content);
PDF.SaveAs(this.path);
}
}
Imports IronPdf
Public Class PDFHandler
Private path As String
Public Sub New(ByVal path As String)
Me.path = path
End Sub
Public Sub GeneratePDF(ByVal content As String)
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf(content)
PDF.SaveAs(Me.path)
End Sub
End Class
このPDFHandler
クラスでは、this
キーワードが現在のインスタンスのpath
フィールドを参照するために使用されます。 このフィールドは、生成されたPDFを指定されたパスに保存するために使用されます。
新しいインスタンスのPDFHandler
を作成し、GeneratePDF
メソッドを呼び出すと、this
キーワードを使用してオブジェクト作成時に指定されたpath
を利用することができます:
class Program
{
static void Main(string [] args)
{
PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyowrd.pdf");
pdfHandler.GeneratePDF("Hello World!");
}
}
class Program
{
static void Main(string [] args)
{
PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyowrd.pdf");
pdfHandler.GeneratePDF("Hello World!");
}
}
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim pdfHandler As New PDFHandler("C:\ThisKeyowrd.pdf")
pdfHandler.GeneratePDF("Hello World!")
End Sub
End Class
ここでは、this
を使用することで、特にIronPDFのようなライブラリを扱う際にコードがより読みやすく、理解しやすくなります。
これまでに、C#のthis
キーワードについて、シンプルなインスタンス変数から、コンストラクタ、拡張メソッド、プロパティ、デリゲート、匿名メソッド、さらにIronPDFのような人気のライブラリを使用する場合に至るまで、広範な用途を理解しているはずです。
「Remember, IronPDF offers a」で文章が途中までしか提供されていません。具体的な詳細が不足していますので、残念ながら完全な翻訳を提供するのは難しいです。提供された部分だけを翻訳するなら、以下のようになります:
「覚えておいてください、IronPDFは」IronPDFの無料トライアルつまり、今日は学んだすべてを試すことができます。 継続することを決定した場合、ライセンスは"$liteLicense "からとなります。 IronPDFは、C#開発ツールキットに追加する価値のあるツールであり、アプリケーションでのPDFファイルの取り扱いを簡素化します。
9つの .NET API製品 オフィス文書用