1つのプロジェクトをVisual BasicからC#に移行しました。実際移行してみて感じたメリット・デメリットがありました。

C#の方が優れていた部分として、

  • ラムダ式によってAdapterが不要になった

    私はコマンドを受け付ける部分をコマンドパターンによって使い回しするようにしています。Visual Basicではルーチンをコマンドにラップするクラスを記述していました。ラムダ式によって簡単にコマンド化することができるのでこれら多くのクラスが不要になりました。コーディングの自由度が高く、SEの設計センスがより問われると思います。

  • コンパイル速度が速い

    体感で2倍程度。

  • リファクタリングの種類が豊富

    名前の変更だけでなく、フィールドのカプセル化・パラメータの順序変更など多くのリファクタリングが利用できる。

C#の使いにくい部分は、

  • 括弧の対応が分かりにくい

    if,swithなどの制御構造を追加するときなどインデントが崩れると右括弧がどれに対応しているのかわからなくなる。End Subなどでメリハリが付いているVisual Basicの方がよい。

  • 型名が省略できない

    Withもなくusingに型名が指定できないので、他のオブジェクトのメソッドを呼ぶときは型名(or オブジェクト変数名).メソッド名の形式で呼ばなければならず、細かいところで記述量が多い。コンパイル速度が速い原因は型名を省略できないことかも知れないので善し悪しは微妙なところ。

また、null(Nothing)の扱いには違いがあり、Visual Basicではイコールで比較すると長さ0の文字列とNothingを同一視しますがC#では区別します。

総合的にはC#に移行して良かったと思います。その一番大きなファクターはラムダ式です。

Visual Basic から C# に変換