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

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

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

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

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

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

なぜ必要ですか?

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

ゲッターは、ユーザーが直接変更せずにprivate string descriptionの値を取得できるようにします。 一方で、セッターは、設定した条件に従って説明を変更することをユーザーに許可します。

アクセス修飾子

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

  • Public: publicとして宣言されたフィールドやプロパティは、プログラムのどこからでもアクセスできます。 たとえば、プログラムのどの部分からでもアクセスおよび変更できるpublic int Ageプロパティを持つことができます。
  • Private: 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());
    }
}
Imports System

Public Class Person
	Private name As String ' This is a private string name property variable

	' This is the getter
	Public Function GetName() As String
		Return name
	End Function

	' This is the setter
	Public Sub SetName(ByVal newName As String)
		name = newName
	End Sub
End Class

Friend Class Program
	Shared Sub Main()
		Dim person As New Person()
		person.SetName("John")
		Console.WriteLine(person.GetName())
	End Sub
End Class
$vbLabelText   $csharpLabel

上記の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
    }
}
Imports System

Public Class Student
	Public Property Name() As String ' -  This is an auto-implemented or automatic property
	Public Property Title() As String ' -  Another auto-implemented property
End Class

Friend Class Program
	Shared Sub Main()
		Dim student As New Student()
		student.Name = "Alice" ' Using setter
		Console.WriteLine(student.Name) ' Using getter
	End Sub
End Class
$vbLabelText   $csharpLabel

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

プロパティの高度なアクセス修飾子

読み取り専用プロパティ

時には、外部からは変更できないが読み取れるプロパティを提供したいと思うことがあるかもしれません。 ここで読み取り専用プロパティが便利になります。 プロパティ内のセッターを省略することで、それを読み取り専用にすることができます。

読み取り専用のPersonクラスに追加したいとしましょう:

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;
    }
}
Public Class Person
	Public Property Name() As String
	Public ReadOnly Property Description() As String

	Public Sub New(ByVal name As String, ByVal description As String)
		Me.Name = name
		Me.Description = description
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、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
    }
}
Imports System

Public Class Program
	Private privateDescription As String
	Public Property Description() As String
		Get
			Return privateDescription
		End Get
		Private Set(ByVal value As String)
			privateDescription = value
		End Set
	End Property

	Public Sub New()
		Description = "This is a program about getters and setters."
	End Sub
End Class

Friend Class ProgramTest
	Shared Sub Main()
		Dim myProgram As New Program()
		Console.WriteLine(myProgram.Description) ' Allowed
		' myProgram.Description = "New Description";  // Not allowed
	End Sub
End Class
$vbLabelText   $csharpLabel

この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;
        }
    }
}
Public Class Person
	Public Overridable Property Name() As String
End Class

Public Class Student
	Inherits Person

	Private studentID As String

	Public Overrides Property Name() As String
		Get
			Return MyBase.Name
		End Get
		Set(ByVal value As String)
			If Not String.IsNullOrEmpty(value) Then
				MyBase.Name = value
			End If
		End Set
	End Property
End Class
$vbLabelText   $csharpLabel

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

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

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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

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

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

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronXL - Excel操作を簡単に

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

IronOCR - Optical Character Recognition in C

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

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

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

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

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

結論

要約すると:

  1. Getter and Setter: クラスのプライベートフィールドへのアクセスと変更を支援します。
  2. Auto Properties: 自動実装プロパティを利用して自動ゲッターとセッターを持つエレガントな方法。
  3. Access Modifiers: プロパティのアクセス性を微調整するのに役立ちます。

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

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

コミットする準備ができたら、個々のライセンスは$999から始まります。 このツールのうち、あなたのニーズに合うものが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)

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

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね