投稿者 YuO  (社会人) 投稿日時 2012/2/10 11:23:22
2. に関しては互換性の問題かと。

C#では ref/out (VB でいう ByRef または <Out>ByRef) と this (VB でいう <Extension>) を同時に使うことができません。
たとえVBで作ったとしても,呼び出し時に out/ref を前置しないといけないため,実質的に拡張メソッドとして呼び出すことができなくなります。
static class Program
{
  static void Increment (this ref int @this) // エラー CS1101: パラメーター修飾子 'ref' は 'this' と共に使用することはできません。 
  {
    ++@this;
  }

  static void Main ()
  {
  }
}


基本的に,VB/C#の片方でしか使えない要素をパブリックインターフェースの一部として使うことは推奨されません。
同様に推奨されない要素としては,デフォルトでない名前付きプロパティがあります。