私はC#を学習しており、フィールドをクラスにプライベートにして、ゲッターとセッターを使用してフィールド値の代わりにメソッドを公開する方法を学習しています。
get; set;
in 方法1と方法2は同等ですか?例えば一方は他方の省略表現ですか?
class Student
{
// Instance fields
private string name;
private int mark;
// Method 1
public string Name { get; set; }
// Method 2
public int Mark
{
get { return mark; }
set { mark = value; }
}
}
最後に、たとえば値を取得または設定する前に計算を実行する場合、方法2を使用しますか?例えば値をパーセンテージに変換するか、検証を実行しますか?例えば.
class Student
{
// Instance fields
private string name;
private double mark;
private int maxMark = 50;
// Method 1
public string Name { get; set; }
// Method 2
public double Mark
{
get { return mark; }
set { if ( mark <= maxMark ) mark = value / maxMark * 100; }
}
}
はい、方法1は方法2へのショートカットです。デフォルトで方法1を使用することをお勧めします。さらに機能が必要な場合は、方法2を使用します。getおよびsetに異なるアクセス修飾子を指定することもできます。
はい Method2
は、カスタムのゲッターおよびセッター関数がある場合の方法です。 Method1を使用する場合、デフォルトでは、内部で処理されるデフォルトのプライベートプロパティがあります。詳細については、これを参照してください [〜#〜] url [〜#〜] 。
サンプル:
string _name;
public string Name
{
get => _name;
set => _name = value;
}