2021年06月01日
C#のreadonlyとgetプロパティ
こんばんは。DIMNと申します。
C#の修飾子のreadonlyと、{ get; }のみを実装したプロパティって同じだと思っていましたが、
Dictionaryクラスを使ってると微妙に違いました。
両方ともコンストラクタでのみ変更可能で、それ以外の場所では参照のみ可能です。
至って普通の動作です。
こういう風に定義するとDicの中には何も入りません。入れる時に特にエラーも出ません。
getプロパティのみと、 => で定義するのって同じだと思ってましたが、なんか違うみたいですね。
ということで気をつけようという記事でした。
C#の修飾子のreadonlyと、{ get; }のみを実装したプロパティって同じだと思っていましたが、
Dictionaryクラスを使ってると微妙に違いました。
両方ともコンストラクタでのみ変更可能で、それ以外の場所では参照のみ可能です。
実戦で役立つC#プログラミングのイディオム/定石&パターン [ 出井秀行 ] 価格:3,278円 |
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
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/10766612
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック