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 するとか、出来なかったのかしらん?