C#3.0

 C#2.0とはほぼ別言語と考えていいみたいだ。

 プロパティの自動実装が入った。

class Hoge
{
  public int Foo{ get; set; }
}

 これでパブリックなFooプロパティが出来た。内部で__fooみたいなフィールドが出来ているはずだがそれは我々にはアクセスできない。
実質パブリックフィールドみたいなものだ。処理を変更しても依存してるdllなりexeなりを変えなくていいというのはあるけど。
フィールドだと出来ることは限られてしまう。ソースコードレベルではプロパティもフィールドも別に変わらないのだけど。

class Hoge
{
  public int Foo{ get; private set; }
}

 これでセットだけプライベートなFooが出来る。よく使う形だ。

void Method()
{
  var hoge = new Hoge{ Foo = 3 };
}

 有名な新機能であるコンストラクタでのプロパティぶっこ入れも可能だ。privateであってもコンストラクタならぶっこめる。
コンストラクタを書く必要のあるケースがだいぶ減った。非常に便利。