readonly な struct に気をつけろ
軽くハマったので、メモ。
本当は怖い readonly な struct、の巻。
using System; // 値型(struct)であることがミソ struct Counter { public int Value; public void Increment() { ++Value; } } // Counter を readonly で保持していることがミソ class CounterHolder { public readonly Counter Counter; } class Program { static void Main() { CounterHolder holder = new CounterHolder(); Console.WriteLine( holder.Counter.Value ); // 初期値は 0 holder.Counter.Increment(); // インクリメントしてみても・・・ Console.WriteLine( holder.Counter.Value ); // 値は 0 のまま! } }
コンパイルエラーに出来ないのはやむを得ないにしても、実行時にエラーを throw するとか、出来なかったのかしらん?