注意!式本体のプロパティは呼び出されるたびに式を実行します。私の答えの最後の部分で例を見ることができます。
public string Name { get; } = "bob";
が
private readonly string _name = "bob";
public string Name
{
get
{
return _name ;
}
}
Check it out yourself.
ための構文糖ですが
public string Name => "bob";
は
public string Name
{
get
{
return "bob";
}
}
ためのシンタックスシュガーです0
ここに危険な部分があります!
式の本文は、このプロパティを呼び出すたびに実行されます。それは、ハードコーディングされた値を返すだ場合には罰金だが、それは、例えば、リストを返すなら、それは毎回新しいリストを返します。つまり
public List<string> Names
{
get
{
return new List<string>() {"bob"};
}
}
:
public List<String> Names => new List<String>() {"bob"};
はのためにシンタックスシュガーです自動プロパティの初期化とない場合:
public List<String> Names { get; } = new List<String>() {"bob"};
は、このための糖衣構文です:
private readonly List<string> _names = new List<string>() {"bob"};
public string Names
{
get
{
return _names;
}
}
ご覧のとおり、このリストは一度だけ初期化されます。
Check it out yourself.
悲しいことに、重複の答えはセットワンス値のみの仕様に答えていない、以下の答えは私の正確質問に答えます。 – Jay