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

    広告

    posted by fanblog

    2021年06月01日

    C#のreadonlyとgetプロパティ




    C#の修飾子のreadonlyと、{ get; }のみを実装したプロパティって同じだと思っていましたが、
    Dictionaryクラスを使ってると微妙に違いました。


    両方ともコンストラクタでのみ変更可能で、それ以外の場所では参照のみ可能です。




    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日以上新しい記事の更新がないブログに表示されております。

    Mobilize your Site
    スマートフォン版を閲覧 | PC版を閲覧
    Share by: