2

C#3.0より前は、次のように実行していました。

class SampleClass
{
   private int field;
   public int Property { get { return this.field } set { this.field = value } }
}

今、これを行います:

class SampleClass
{
   public int Property { get; set; }
}

(フィールドがありません!)ゲッターまたはセッターをカスタマイズする場合、フィールドはC#2.0の場合のように明示的である必要がありますか?

4

4 に答える 4

7

はい、それが唯一の方法です。カスタマイズの近道はありません (アクセス修飾子以外)。

于 2009-06-06T21:40:20.060 に答える
2

C# 3.0 と自動プロパティを使用すると、引き続きアクセス レベルを変更できます。

class SampleClass
{
   public int Property { get; private set; }
}
于 2009-06-06T21:43:12.520 に答える
1

ええ、自動プロパティの目的は、クラスの既存のユーザーに影響を与えることなく、将来カスタマイズを追加する手段を提供することです。これは通常、プライベート/保護されたバッキング フィールドを追加することを意味します。

于 2009-06-06T21:42:38.870 に答える
0

また、自動プロパティを使用して読み取り専用フィールドを指定することも、変数初期化子を使用することもできません(ただし、それらを許可する言語拡張機能の提案をいくつか見てきました)。

自動プロパティを仮想化することもできますが、それは、クラス内のプロパティへのアクセスが代わりにサブタイプ実装を呼び出す可能性があることを意味します。

于 2009-06-06T22:14:48.320 に答える