透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
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;
}
この場合、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;
}
}
パラメータのないコンストラクタでは、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);
}
}
ここで、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; }
}
}
この 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.
}
}
ですので、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; }
}
}
クラス内では、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);
}
}
学生クラスでは、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);
}
}
この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!");
}
}
ここでは、this
を使用することで、特にIronPDFのようなライブラリを扱う際にコードがより読みやすく、理解しやすくなります。
これまでに、C#のthis
キーワードについて、シンプルなインスタンス変数から、コンストラクタ、拡張メソッド、プロパティ、デリゲート、匿名メソッド、さらにIronPDFのような人気のライブラリを使用する場合に至るまで、広範な用途を理解しているはずです。
「Remember, IronPDF offers a」で文章が途中までしか提供されていません。具体的な詳細が不足していますので、残念ながら完全な翻訳を提供するのは難しいです。提供された部分だけを翻訳するなら、以下のようになります:
「覚えておいてください、IronPDFは」IronPDFの無料トライアルつまり、今日は学んだすべてを試すことができます。 継続することを決定した場合、ライセンスは"$liteLicense "からとなります。 IronPDFは、C#開発ツールキットに追加する価値のあるツールであり、アプリケーションでのPDFファイルの取り扱いを簡素化します。