ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
ゲッターとセッターは、C#のようなオブジェクト指向プログラミング言語において重要な概念です。 これらの二つのメソッドを使用すると、クラスのプロパティへのアクセスと変更を制御することができます。 このチュートリアルでは、コードブロックを使用してC#のゲッターとプライベートセッターの初心者と中級者の両方の側面を探ります。
基本的に、ゲッターとセッターはクラス内で同じ名前を持つメソッドに過ぎません。 ゲッターはプライベートフィールド変数の値を返し、セッターはその重要性を変更します。 これらのメソッドは、クラスの内部データ(フィールド)安全かつ正確にアクセスまたは修正されます。
private string description property name
を持つpublic class car
を想像してください。 このクラスの外部の人が説明を知りたい場合、それがプライベートであるため、直接アクセスできません。 ここでゲッターとセッターの役割が登場します。
ゲッターは、ユーザーが private string description
の値を直接変更することなく、取得することを可能にします。 一方、セッターは設定した条件の下で、ユーザーに暗黙のパラメーター記述を変更できるようにします。
アクセスタ修飾子は、フィールドやプロパティがクラス外部からどの程度の可視性とアクセス性を持つかを定義します。 最も一般的に使用される修飾子は public
と private
です。
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());
}
'set accessor
Public Class Person
Private name As String ' This is a private string name property variable
Public Function GetName() As String ' This is the getter
Return name
End Function
Public Sub SetName(ByVal newName As String) ' This is the setter, new value
name = newName
End Sub
End Class
Shared Sub Main()
Dim person As New Person()
person.SetName("John")
Console.WriteLine(person.GetName())
End Sub
上記の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
}
Public Class Student
Public Property Name() As String ' - This is an auto-implemented or automatic property, public string Name
Public Property Title() As String
End Class
Shared Sub Main()
Dim student As New Student()
student.Name = "Alice" ' Using setter
Console.WriteLine(student.Name) ' Using getter
End Sub
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;
}
}
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
この例では、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
}
}
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
class Program
の Description
プロパティには 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;
}
}
}
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
この例では、Student
クラスが Person
から継承し、Name
プロパティのセッターをオーバライドしています。 名前を設定する前に検証チェックを追加し、それが空やnullでないことを確認します。
Iron Suiteは、C#開発能力を大幅に向上させる研究開発ツールのコレクションです。 それには IronPDF、IronXL、IronOCR、および IronBarcode が含まれています。 これらの各ツールは独自の目的を持ち、C#のさまざまな側面に統合することができます。
IronPDFについてもっと知る.NETは、開発者がC#でPDF文書を作成、読み取り、編集できるライブラリです。 HTMLをPDFに変換する場合でも、PDFのメタデータをゲッターとセッターで管理する場合でも、IronPDFはあなたをカバーします。
Excelファイルを取り扱う際、IronXL Excelライブラリ読み書きのプロセスを簡素化します。 このツールは、Excelファイルのプライベートおよびパブリック文字列または整数を操作するために使用できます。これは、C#のゲッターとセッターの同じ構文を使用してクラス内のデータを処理する方法に似ています。
IronOCRを探るまた、画像を検索可能なテキストに変換する光学式文字認識ライブラリが必要です。 お客様のアプリケーションがスキャンされたドキュメントからテキストを読み取る必要がある場合、IronOCRの強力な機能を簡単に統合できます。 それは、前の例のセットアップにあるクラスPersonやクラスStudentのように、プライベートフィールドやパブリックな文字列の説明を処理できます。
IronBarcodeの特徴を見るバーコードの読み取りと書き込みを必要とするアプリケーション向け。 それは、C#プログラミングで使用されるゲッターとセッターのように、自動プロパティを通じたカスタマイズとバーコードデータへの直接アクセスの両方を可能にします。
Iron Suiteパッケージは、ゲッターとセッターを含むC#開発にシームレスに統合されます。 これらのツールは、あらゆるC#プロジェクトに価値を追加します。
要約すると:
Getter
とSetter
:クラスのプライベートフィールドにアクセスし、修正するために役立ちます。
オートプロパティ
: 自動実装プロパティを使って、自動的なゲッターとセッターを持つための洗練された方法。
アクセス修飾子
: それらはプロパティのアクセス制御を微調整するのに役立ちます。
この時点で、C#におけるゲッターとセッターの使用方法についてしっかりと理解できているはずです。
Iron Suiteの一連のツールは、C#開発者にとって驚異的な機能を提供します。 以下の各製品(IronPDF、IronXL、IronOCR、IronBarcode)は、それぞれにIronソフトウェアのツールの無料トライアル。これにより、これらの強力なライブラリを初期投資なしでプロジェクトに組み込んで活用することができます。
コミットする準備ができたら、個別ライセンスは$749から開始します。 これらのツールのうち複数があなたのニーズに合う場合は、2つの個別ライセンスの価格で完全なIron Suiteパッケージを購入する機会を活用できます。
9つの .NET API製品 オフィス文書用