アフィリエイト広告を利用しています
プロフィール
DIMNさんの画像
DIMN
普通の会社員 IT企業で働いています。底辺エンジニアなりにJavaやらC#を駆使して頑張ってます。 某youtubeチャンネルの影響ですが、少ない賃金で投資にも手を出してます。
プロフィール
記事ランキング
最新記事
カテゴリーアーカイブ
検索

広告

posted by fanblog

2021年06月01日

C#のreadonlyとgetプロパティ

こんばんは。DIMNと申します。


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プロパティのみと、 => で定義するのって同じだと思ってましたが、なんか違うみたいですね。


ということで気をつけようという記事でした。





タグ:C# readonly
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/10766612
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。