IRONSOFTWAREHOME
開発者向けアップデート

C# This (開発者向けの仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月23日

C#には特別な重要性を持つ特定のキーワードがあり、それがthisキーワードです。 このキーワードは、それが使用されている現在のクラスのインスタンスを参照します。 特に、クラスレベルの変数と、同じ名前を共有するメソッドのパラメータを区別するために使用できます。 例えば、インスタンス変数とメソッドパラメータが同じ名前の場合、thisは非常に便利です!

このキーワードの基礎知識

例えば、nameのようなパブリックインスタンス変数を持つことがあります。 メソッド内でこれらのインスタンス変数に値を代入したい場合、よくある問題につまずくかもしれません。

C#のドキュメントにあるthisキーワードを使いましょう! パブリッククラスthisキーワードは、名前が一致するインスタンス変数とメソッドパラメータを区別するために使用されます。

public class Employee
{
    private int id;
    private string name;
    
    public void Display(int id, string name)
    {
        // Use `this.id` to refer to the instance variable, 
        // and `id` for the method parameter.
        this.id = id;
        this.name = name;
    }
}

この場合、idはメソッドパラメータです。

コンストラクタオーバーロードにおけるthisキーワード

thisキーワードを利用することで、同じクラス内でコンストラクタオーバーロードが強力なテクニックになります。 クラスに異なるパラメータを持つ複数のコンストラクタがある場合、thisキーワードはあるコンストラクタが他のコンストラクタを呼び出すことで、冗長なコードを排除できます。

パラメータ付きコンストラクタでthisを使用した次の例を考えてみましょう:

public class Student
{
    private string name;
    private int id;

    public Student() : this("Default", 0)
    {
        // Default constructor delegates to the parameterized constructor
        // with "Default" as the name and 0 as the id.
    }

    public Student(string name, int id)
    {
        // Assign the parameters to the instance variables
        this.name = name;
        this.id = id;
    }
}

パラメータなしのコンストラクタでは、0をIDとして設定します。

拡張メソッドにおけるthisの探求

C#の拡張メソッドは、元の型を変更することなく、既存の型にメソッドを追加する方法を提供します。 ここでthisキーワードが効果を発揮します。 これは、拡張メソッドのパラメータリストで、拡張される型を参照するために使用されます。

次の拡張メソッドの例を考えてみましょう:

public static class StringExtensions
{
    // This extension method can be called on any string instance
    public static bool IsNullOrEmpty(this string str)
    {
        return string.IsNullOrEmpty(str);
    }
}

ここでは、this string strがC#に、これは文字列型の拡張メソッドであることを知らせます。 これで、if(myString.IsNullOrEmpty())のように任意の文字列オブジェクトでこのメソッドを使用できます。

インデクサーにおけるthis

インデクサーの定義にもthisキーワードを使用できます。 インデクサは、配列のようにクラスのインスタンスにインデックスを付けることができます。 これは、インデックスのような記法を使用してオブジェクト内のデータにアクセスするのに役立ちます。 インデクサーでは、int indexである配列インデックスが続きます。

以下は、インデクサーの基本的な例です:

public class Test
{
    private int[] array = new int[100];

    // Define an indexer for the class
    public int this[int index]
    {
        get { return array[index]; }
        set { array[index] = value; }
    }
}

このクラスarrayインスタンスフィールドの値を取得または設定するために使用できます。

thisと静的メンバー

thisについて気を付けなければならないことの1つは、静的メンバーやメソッドを参照するためには使用できないことです。 これはthisが現在のインスタンスを指すためであり、静的メンバーはクラス自体に属し、クラスのインスタンスには属しないためです。

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; } // Use `this` to refer to the instance variable
    }
}

上記のクラスでは、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()
    {
        // `this.DisplayDetails` refers to the method instance of the current object.
        DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
        displayDelegate();
    }

    private void DisplayDetails()
    {
        Console.WriteLine("ID: " + Id + ", Name: " + Name);
    }
}

学生クラスでは、DisplayDetailsメソッドを参照する新しいデリゲートインスタンスを作成します。

IronPDFとthisキーワードの実装

IronPDFという強力な.NETライブラリと共にthisキーワードを使用する例を探ってみましょう。

PDFファイルに対して様々な操作を行うためにIronPDFライブラリを使用するPDFHandlerというクラスを考えましょう:

using IronPdf;

public class PDFHandler
{
    private string path;

    public PDFHandler(string path)
    {
        this.path = path;
    }

    public void GeneratePDF(string content)
    {
        // Creating a renderer to convert HTML content to PDF
        var Renderer = new IronPdf.ChromePdfRenderer();
        var PDF = Renderer.RenderHtmlAsPdf(content);
        
        // Save the generated PDF to the path specified by the current instance
        PDF.SaveAs(this.path);
    }
}

このpathフィールドを参照するために使用されます。 このフィールドは、生成されたPDFを指定されたパスに保存するために使用されます。

pathを利用できるようにします:

class Program
{
    static void Main(string[] args)
    {
        // Initialize PDFHandler with a specified file path
        PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyword.pdf");
        pdfHandler.GeneratePDF("Hello World!");
    }
}

ここでthisは、特にIronPDFのようなライブラリを扱う際に、コードをより読みやすく理解しやすくします。

C# This (How It Works For Developers) Figure 1

結論

これまでのところで、C#のthisキーワードについて良い理解が得られたはずです。その用途は、シンプルなインスタンス変数からコンストラクタ、拡張メソッド、プロパティ、デリゲート、匿名メソッド、さらにはIronPDFのような人気のライブラリを使用する複雑なコンテキストまで広範囲にわたります。

IronPDFは無料トライアルを提供しています。 それを続けることにした場合、ライセンスは$999から始まります。 IronPDFはあなたのC#開発ツールキットに加える価値があり、アプリケーションでPDFファイルを扱うタスクを簡素化します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から