Разработчики языка C# перемудрили с дизайном в результате разработчики его компилятора "не смогли":
## Код:
```
class Program
{
  struct Foo
  {
    public int value;
    public void Init (int x)
    {
      this.value = x;
    }
  }

  static readonly Foo foo;

  static void Main (string[] args)
  {
    foo.value = 5; // Здесь правильно ругается:
    // Error 1 Fields of static readonly field 'Program.foo' cannot be assigned to 
    // (except in a static constructor or a variable initializer)

    foo.Init(5); // А здесь не ругается ни при компиляции, ни во время исполнения,
    // но foo.value остаётся равным 0

    System.Console.WriteLine("foo.value = {0}", foo.value);
    System.Console.ReadLine();
  }
}
```
