C#の修飾子のreadonlyと、{ get; }のみを実装したプロパティって同じだと思っていましたが、
Dictionaryクラスを使ってると微妙に違いました。
両方ともコンストラクタでのみ変更可能で、それ以外の場所では参照のみ可能です。
実戦で役立つC#プログラミングのイディオム/定石&パターン [ 出井秀行 ]
価格: 3,278円
(2021/6/1 18:53時点)
感想(1件)
readonly
public class Service
{
private readonly Dictionary _dic = new Dictionary ();
public void Test()
{
_dic["Test1"] = 1;
_dic["Test2"] = false;
foreach(var a in _dic)
{
Console.WriteLine(a.Value); // 1, False
}
}
}
至って普通の動作です。
getプロパティのみの場合
public class Service
{
private Dictionary Dic => new Dictionary ();
// private Dictionary Dic { get; } = new Dictionary (); // これだと追加される
public void Test()
{
Dic["Test1"] = 1;
Dic["Test2"] = false;
foreach(var a in Dic)
{
Console.WriteLine(a.Value);// Dicは空っぽなので入らない
}
}
}
こういう風に定義するとDicの中には何も入りません。入れる時に特にエラーも出ません。
getプロパティのみと、 => で定義するのって同じだと思ってましたが、なんか違うみたいですね。
ということで気をつけようという記事でした。
【このカテゴリーの最新記事】
- no image
- no image
- no image
- no image
- no image
- no image
- no image
- no image
- no image
- no image