0

私はC#でこの種のコードを見てきました:

  private int id {get;set;}

しかし、get と set がある場合にのみ、フィールドの原因の getter を作成します。これは public フィールドと同じであり、唯一の方法は次のとおりです。

public int getId(){return id;}

VS2010 でゲッターのみを自動生成する方法

4

6 に答える 6

7

読み取り専用プロパティをどのように実装するのですか? もしそうなら試してみてください:

public int Id { get; private set;}
于 2013-01-19T20:39:09.643 に答える
4

実装したものは、次のAutomatic Propertyようになります。

private string Name { get; set; }

自動プロパティは単なる構文糖衣であり、実際には、このコードを実装するための簡潔で迅速な方法を提供します。

private string _name;
public string Name 
{ 
    get { return _name; } 
    set { _name = value; } 
}

手動プロパティを使用して自動プロパティを無視し、単純にget. または、自動プロパティを使用しgetて、プライベート アクセス修飾子でマークすることにより、プロパティの値を外部メンバーに対してのみ読み取るようにします。

public string Name { get; private set; }

プロパティは実際には変装したメソッドにすぎず、より良い規則として使用する必要があるため、通常使用するコードは C# では実際に必要になることはありません。

public int getId(){return id;} //bad
于 2013-01-19T20:43:21.750 に答える
1

フィールド、リファクタリング、カプセル化されたフィールドを右クリック

于 2013-01-19T20:39:59.787 に答える
1

いいえ、それらは同じではありません。プロパティは、プロパティにバインドされた 1 つまたは 2 つのメソッドにコンパイルされます。例えば:

public int Foo { get; private set; }

次のように動作する IL コードにコンパイルされます。

private int _foo;
public int Foo { get_Foo = get, set_Foo = set }

public int get_Foo() { return _foo; }
private void set_Foo(int value) { _foo = value; }

つまり、プロパティはメソッドですが、フィールドはそうではありません。そのため、次のようなことができます。

public int Foo { get { return 0; } }

これは次のようにコンパイルされます:

public int Foo { get_Foo = get }

public int get_Foo() { return 0;}

アップデート

さて、私はあなたの質問を理解しました...答えは、ゲッターのみがどのように機能するか、またそれが何をするかを示す最後の部分です:-)

于 2013-01-19T20:42:07.340 に答える
1

これは非常に似ています:

オートプロパティの作成方法

ヒントpropを入力してタイプを入力し、Tab キーを押して名前を入力します。

于 2013-01-19T20:42:19.893 に答える
1

公開されているが、クラスによってのみ設定できるプロパティが必要だと思います。それは次のようなものですか:

 public class Entity
 {
     public void Entity()
     {
         ID = ...;  // Some unique id
     }

     public int ID { get; private set; }
 }

これにより、クラス Entity は ID の読み取りと書き込みを行うことができますが、他のクラスは ID の読み取りしかできません。

于 2013-01-19T20:43:06.663 に答える