フッターコンテンツにスキップ
.NETヘルプ

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

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

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

ゲッターとセッターとは?

本質的に、ゲッターとセッターは、クラス内のプライベート変数へのアクセスを可能にするメソッドに過ぎません。 ゲッターはプライベートフィールド変数の値を返し、セッターはそれを変更します。 これらのメソッドは、クラスの内部データ(フィールド)が安全に正確にアクセスまたは変更されることを保証します。

なぜ必要ですか?

public class Carprivate string description プロパティを持っていると想像してください。 このクラスの外部から誰かが説明を知りたい場合、それがプライベートであるため直接アクセスすることはできません。 ここで、ゲッターとセッターの役割が出てきます。

ゲッターはユーザーが private string description の値を取得することを可能にし、直接変更するアクセスを与えることなくそれを行います。 一方で、セッターは、設定した条件に従って説明を変更することをユーザーに許可します。

アクセス修飾子

アクセス修飾子は、クラス外から見たフィールドまたはプロパティの可視性とアクセス性のレベルを定義します。 最も一般的に使用される修飾子は publicprivate です。

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

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

簡単な例を始めましょう。

using System;

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

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

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

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

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

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

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

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
$vbLabelText   $csharpLabel

上記の class Person では、name プロパティに対してゲッター (GetName) とセッター (SetName) の両方を持っています。 static void Main メソッドを実行すると、セッターを使用して名前にその値を設定したため、"John"と出力されます。

自動実装プロパティ

今、あなたは"ゲッターとセッターのために常に別々のメソッドを書く必要があるのか?"と考えるかもしれません。その答えは"いいえ"です。C#はこれを簡素化するために"自動実装プロパティ"または"自動プロパティ"と呼ばれる概念を導入しました。

C# では、自動プロパティを使用することで、private field とその関連プロパティを宣言するための短縮形を提供します。 以下は例です:

using System;

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

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

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

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

Student クラスでは、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;
    }
}
$vbLabelText   $csharpLabel

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

プライベートセッター

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

using System;

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
    }
}
using System;

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
    }
}
$vbLabelText   $csharpLabel

class Program 内では、Description プロパティには private set があり、クラス外からは変更できず、データの整合性を保証します。

継承とオーバーライド

派生クラスと作業する場合、ゲッターおよびセッターメソッドをオーバーライドしてその挙動をカスタマイズすることができます。 これにより、値を取得または設定するときに追加のロジックを追加することができます。

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;
        }
    }
}
$vbLabelText   $csharpLabel

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

Iron Suiteを使ったC#開発の強化

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

IronPDF - 強力なPDF管理ツール

IronPDFについて詳しくはこちら C#でPDF文書を作成、読み取り、編集できるライブラリです。 HTMLをPDFに変換するか、ゲッターやセッターを通じてPDFメタデータを管理するかにかかわらず、IronPDFはあなたをサポートします。

IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な 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");
    }
}
$vbLabelText   $csharpLabel

IronXL - Excel操作を簡単に

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

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

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

IronBarcode - バーコードの読み取りと書き込みライブラリ

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

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

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

結論

要約すると:

  1. ゲッターとセッター: それらは、クラスのプライベートフィールドにアクセスし、変更するのを助けます。
  2. 自動プロパティ: 自動実装プロパティのおかげで、ゲッターとセッターを自動的に持つエレガントな方法。
  3. アクセス修飾子: それらはプロパティのアクセス性を微調整するのに役立ちます。

今や、C#でゲッターとセッターを使用する方法についてしっかりとした理解を得ているはずです。

Iron Suiteのツール群は、C#開発者に素晴らしい機能性を提供します。 これらの製品の各々、ならびにIronPDF、IronXL、IronOCR、IronBarcodeは、Iron Softwareツールの無料トライアルを提供し、最初の投資なしでこれらの強力なライブラリをあなたのプロジェクトに探求し、統合することができます。

用意ができたら、個別のライセンスは$799から始まります。 このツールのうち、あなたのニーズに合うものが2つ以上見つかった場合、2つの個別ライセンスの価格で完全なIron Suiteパッケージを購入する機会を活用できます。

よくある質問

C# のゲッターとセッターの目的は何ですか?

C# のゲッターとセッターは、クラスのプライベートプロパティへのアクセスを制御するために使用されます。ゲッターはプロパティの値を取得し、セッターはプロパティを変更可能にします。このカプセル化は、クラスのデータへの安全で制御されたアクセスを保証します。

C# ではアクセス修飾子がプロパティの可視性にどのように影響しますか?

C# での publicprivate などのアクセス修飾子は、クラスのプロパティの可視性とアクセス可能性を決定します。Public プロパティはどこからでもアクセス可能ですが、private プロパティは宣言されているクラス内に限定されます。

C# の自動実装プロパティとは何ですか?

自動実装プロパティは、C# でプロパティを宣言するための省略記法を提供します。別個のフィールド、ゲッター、セッターを明示的に書くことなくプロパティを定義できます。コンパイラは自動的にバックフィールドを作成します。

C# で読み取り専用のプロパティを作るにはどうしますか?

C# では、プロパティ宣言でセッターを省略することで読み取り専用のプロパティを作成できます。これにより、プロパティはクラス内でのみ(例えばコンストラクタ内などで)設定可能で、外部からは変更不可能です。

C# でプライベートセッターをどのように使用しますか?

C# のプライベートセッターは、宣言されたクラス内でのみプロパティを変更可能にし、外部コードにはプロパティの読み取りを許可します。これは、データの整合性を維持しながら制御されたアクセスを提供するのに役立ちます。

C# では派生クラスでプロパティの動作をオーバーライドできますか?

はい、C# では基本クラスでプロパティを virtual としてマークし、派生クラスで override キーワードを使用することでプロパティの動作をオーバーライドできます。これにより、ゲッターおよびセッターの動作をカスタマイズできます。

C#でHTMLをPDFに変換する方法は?

IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。

PDF およびバーコード機能で C# 開発を向上させるためのツールは何ですか?

Iron Suite には、IronPDF や IronBarcode などのツールが含まれており、PDF 管理やバーコードの読み書きなどの機能を提供します。これらのツールは C# プロジェクトとシームレスに統合されます。

Iron Suite は C# 開発者にとってどのように有益ですか?

Iron Suite は、C# プロジェクトとシームレスに統合される強力なツールの範囲を提供するため、C# 開発者にとって有益です。これらのツールは、PDF 管理、Excel 操作、OCR 機能、バーコードの読み書きなど、さまざまな機能を提供します。

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

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。