.NET ヘルプ

C# ゲッター セッター (開発者向けの仕組み)

ジョルディ・バルディア
ジョルディ・バルディア
2023年8月29日
共有:

ゲッターとセッターは、C#のようなオブジェクト指向プログラミング言語において重要な概念です。 これらの二つのメソッドを使用すると、クラスのプロパティへのアクセスと変更を制御することができます。 このチュートリアルでは、コードブロックを使用してC#のゲッターとプライベートセッターの初心者と中級者の両方の側面を探ります。

ゲッターとセッターの紹介

ゲッターとセッターとは何ですか?

基本的に、ゲッターとセッターはクラス内で同じ名前を持つメソッドに過ぎません。 ゲッターはプライベートフィールド変数の値を返し、セッターはその重要性を変更します。 これらのメソッドは、クラスの内部データ(フィールド)安全かつ正確にアクセスまたは修正されます。

なぜそれらが必要なのでしょうか?

private string description property nameを持つpublic class carを想像してください。 このクラスの外部の人が説明を知りたい場合、それがプライベートであるため、直接アクセスできません。 ここでゲッターとセッターの役割が登場します。

ゲッターは、ユーザーが private string description の値を直接変更することなく、取得することを可能にします。 一方、セッターは設定した条件の下で、ユーザーに暗黙のパラメーター記述を変更できるようにします。

アクセス修飾子

アクセスタ修飾子は、フィールドやプロパティがクラス外部からどの程度の可視性とアクセス性を持つかを定義します。 最も一般的に使用される修飾子は publicprivate です。

  • Public: public と宣言されたフィールドまたはプロパティは、プログラム内のどこからでもアクセス可能です。 たとえば、public int age プロパティは、コードのどの部分からでもアクセスして変更できます。
  • Private: Private として宣言されたプロパティやフィールドは、定義されたクラス内でのみアクセス可能です。例えば、private int age。 このカプセル化は、不正な変更を防ぎ、クラスの内部状態が適切に維持されることを保証します。

シンプルなゲッターとセッター

簡単な例から始めましょう。

//set accessor
public class Person
{
    private string name;  // This is a private string name property variable

    public string GetName()   // This is the getter
    {
        return name;
    }

    public void SetName(string newName)   // This is the setter, new value
    {
        name = newName;
    }
}

static void Main()
{
    Person person = new Person();
    person.SetName("John");
    Console.WriteLine(person.GetName());
}
//set accessor
public class Person
{
    private string name;  // This is a private string name property variable

    public string GetName()   // This is the getter
    {
        return name;
    }

    public void SetName(string newName)   // This is the setter, new value
    {
        name = newName;
    }
}

static void Main()
{
    Person person = new Person();
    person.SetName("John");
    Console.WriteLine(person.GetName());
}

上記のclass Personには、getter と setter の両方があります(GetName)およびsetter(SetName)name プロパティのために。 static void Main メソッドを実行すると、セッターを使用して名前に設定した値として「John」が出力されます。

自動実装プロパティ

さて、「ゲッターとセッター用に常に個別のメソッドを書かなければならないのか?」と思われるかもしれませんが、答えは「いいえ」です。C#はこれを簡素化するために「自動実装プロパティ」または「オートプロパティ」という概念を導入しました。

C#では、自動プロパティを使用でき、これは private フィールド とその関連プロパティを宣言するための簡潔な方法を提供します。 Here's an example: 例があります。

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property, public string Name
    public string Title {get; set;}
}

static void Main()
{
    Student student = new Student();
    student.Name = "Alice";  // Using setter
    Console.WriteLine(student.Name);  // Using getter
}
public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property, public string Name
    public string Title {get; set;}
}

static void Main()
{
    Student student = new Student();
    student.Name = "Alice";  // Using setter
    Console.WriteLine(student.Name);  // Using getter
}

Student classでは、Nameプロパティはゲッターとセッターの両方を備えており、自動実装されています。 C#コンパイラは内部でprivate string nameフィールドを作成し、Nameプロパティがそのフィールドへのアクセスを提供します。

プロパティにおける高度なアクセス修飾子

読み取り専用プロパティ

場合によっては、外部から修正できず、読み取ることのみ可能なプロパティを提供したいことがあります。 これは読み取り専用プロパティが役立つ場面です。 プロパティでセッターを省略することにより、読み取り専用にすることができます。

次のように Person クラスに読み取り専用の string Description プロパティを追加するとします:

public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}

この例では、Person クラスのコンストラクタ内でのみ Description プロパティを設定できます。 一度設定されると、外部から変更することはできません。

プライベートセッター

時々、クラスの外部からプロパティを読み取り、クラスの内部からのみ設定できるようにしたい場合があります。 これは private set を使用して実現されます。

public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}
public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}

class ProgramDescription プロパティには private set があり、クラス外から変更できないため、データの整合性が保証されています。

継承とオーバーライド

派生クラスを使用する場合、getterおよびsetterメソッドをオーバーライドしてその動作をカスタマイズできます。 これは、値の取得または設定時に追加のロジックを追加することを可能にします。

public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}

この例では、Student クラスが Person から継承し、Name プロパティのセッターをオーバライドしています。 名前を設定する前に検証チェックを追加し、それが空やnullでないことを確認します。

C#開発を強化するIron Suiteのご紹介

Iron Suiteは、C#開発能力を大幅に向上させる研究開発ツールのコレクションです。 それには IronPDF、IronXL、IronOCR、および IronBarcode が含まれています。 これらの各ツールは独自の目的を持ち、C#のさまざまな側面に統合することができます。

IronPDF - 強力なPDF管理ツール

IronPDFについてもっと知る.NETは、開発者がC#でPDF文書を作成、読み取り、編集できるライブラリです。 HTMLをPDFに変換する場合でも、PDFのメタデータをゲッターとセッターで管理する場合でも、IronPDFはあなたをカバーします。

IronPDFは、以下に優れていますHTMLからPDF変換時に、元のレイアウトとスタイルを正確に保持します。 それは、レポート、請求書、およびドキュメントなどのWebベースのコンテンツからPDFを作成するのに最適です。 IronPDFはHTMLファイル、URL、生のHTML文字列をサポートしており、簡単に高品質なPDFドキュメントを生成します。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

IronXL - Excel操作が簡単に

Excelファイルを取り扱う際、IronXL Excelライブラリ読み書きのプロセスを簡素化します。 このツールは、Excelファイルのプライベートおよびパブリック文字列または整数を操作するために使用できます。これは、C#のゲッターとセッターの同じ構文を使用してクラス内のデータを処理する方法に似ています。

IronOCR - C#での光学文字認識

IronOCRを探るまた、画像を検索可能なテキストに変換する光学式文字認識ライブラリが必要です。 お客様のアプリケーションがスキャンされたドキュメントからテキストを読み取る必要がある場合、IronOCRの強力な機能を簡単に統合できます。 それは、前の例のセットアップにあるクラスPersonやクラスStudentのように、プライベートフィールドやパブリックな文字列の説明を処理できます。

IronBarcode - バーコード読み取りおよび作成ライブラリ

IronBarcodeの特徴を見るバーコードの読み取りと書き込みを必要とするアプリケーション向け。 それは、C#プログラミングで使用されるゲッターとセッターのように、自動プロパティを通じたカスタマイズとバーコードデータへの直接アクセスの両方を可能にします。

Iron Suiteとゲッターとセッター

Iron Suiteパッケージは、ゲッターとセッターを含むC#開発にシームレスに統合されます。 これらのツールは、あらゆるC#プロジェクトに価値を追加します。

結論

要約すると:

  1. GetterSetter:クラスのプライベートフィールドにアクセスし、修正するために役立ちます。

  2. オートプロパティ: 自動実装プロパティを使って、自動的なゲッターとセッターを持つための洗練された方法。

  3. アクセス修飾子: それらはプロパティのアクセス制御を微調整するのに役立ちます。

    この時点で、C#におけるゲッターとセッターの使用方法についてしっかりと理解できているはずです。

    Iron Suiteの一連のツールは、C#開発者にとって驚異的な機能を提供します。 以下の各製品(IronPDF、IronXL、IronOCR、IronBarcode)は、それぞれにIronソフトウェアのツールの無料トライアルこれにより、これらの強力なライブラリを初期投資なしでプロジェクトに組み込んで活用することができます。

    コミットする準備ができたら、個別ライセンスは$749から開始します。 これらのツールのうち複数があなたのニーズに合う場合は、2つの個別ライセンスの価格で完全なIron Suiteパッケージを購入する機会を活用できます。

ジョルディ・バルディア
ソフトウェアエンジニア
ジョルディは、Iron Softwareでのスキルを活かしていないときには、ゲームプログラミングをしており、Python、C#、C++に最も堪能です。彼は製品テスト、製品開発、研究の責任を共有しており、継続的な製品改善に大きな価値をもたらしています。この多様な経験は彼を常に挑戦的で魅力的に保ち、彼はIron Softwareで働く一番好きな側面の一つだと言っています。ジョルディはフロリダ州マイアミで育ち、フロリダ大学でコンピューターサイエンスと統計学を学びました。
< 以前
C# 論理演算子(開発者のための仕組み)
次へ >
C# 文字列分割(開発者向けの使い方)