私はC#でこの種のコードを見てきました:
private int id {get;set;}
しかし、get と set がある場合にのみ、フィールドの原因の getter を作成します。これは public フィールドと同じであり、唯一の方法は次のとおりです。
public int getId(){return id;}
VS2010 でゲッターのみを自動生成する方法
私はC#でこの種のコードを見てきました:
private int id {get;set;}
しかし、get と set がある場合にのみ、フィールドの原因の getter を作成します。これは public フィールドと同じであり、唯一の方法は次のとおりです。
public int getId(){return id;}
VS2010 でゲッターのみを自動生成する方法
読み取り専用プロパティをどのように実装するのですか? もしそうなら試してみてください:
public int Id { get; private set;}
実装したものは、次の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
フィールド、リファクタリング、カプセル化されたフィールドを右クリック
いいえ、それらは同じではありません。プロパティは、プロパティにバインドされた 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;}
アップデート
さて、私はあなたの質問を理解しました...答えは、ゲッターのみがどのように機能するか、またそれが何をするかを示す最後の部分です:-)
公開されているが、クラスによってのみ設定できるプロパティが必要だと思います。それは次のようなものですか:
public class Entity
{
public void Entity()
{
ID = ...; // Some unique id
}
public int ID { get; private set; }
}
これにより、クラス Entity は ID の読み取りと書き込みを行うことができますが、他のクラスは ID の読み取りしかできません。