私はそのようなクラスのプロパティを設定しています
public string Name { get; set; }
しかし、私はそのようなプロパティを設定することもできます
public string Name { get; private set; }
これらの違いを知りたいですか?そして彼らはどのような範囲を持っていますか?
私はそのようなクラスのプロパティを設定しています
public string Name { get; set; }
しかし、私はそのようなプロパティを設定することもできます
public string Name { get; private set; }
これらの違いを知りたいですか?そして彼らはどのような範囲を持っていますか?
これは、クラスインスタンスからこのプロパティを設定できないことを意味します。同じクラスのメンバーだけが設定できます。したがって、部外者にとって、このプロパティはプロパティになりread-only
ます。
class Foo
{
public string Name1 { get; set; }
public string Name2 { get; private set; }
public string Name3 { get { return Name2; } set { Name2 = value; }
}
それで
Foo f = new Foo();
f.Name1 = ""; // No Error
f.Name2 = ""; // Error.
f.Name3 = ""; // No Error
Name3
に値をName2
設定しますが、Name2
直接に値を設定することはできません。
そして彼らはどのような範囲を持っていますか?
Name1
およびプロパティは公開されているためName3
、それらとそのgetおよびsetメソッドはどこでも使用できます。
Name3
もパブリックですが、そのセットはプライベートであるため、プロパティとgetメソッドはどこでも使用できます。Setメソッドのスコープはクラスのみに制限されています(private
アクセス修飾子は、それが定義されているエンティティ内にスコープを持っています)。
public string Name { get; private set; }
プライベートセットを使用する場合は、プロパティがReadOnly
外部からのものであることを意味します。読み取り専用プロパティがあり、バッキング変数を明示的に宣言したくない場合に便利です。
public string Name { get; private set; }
それはと同じです:
private string _Name;
public string Name
{
get { return _Name; }
private set { _Name = value; }
}
最初のものは、クラス外で利用可能なメソッドを持っSet
ています。Get
2つ目Get
は、クラス外で使用できるメソッドがありますが、Set
メソッドはクラス内でのみ使用できます。これは通常、読み取り専用の動作を示します。