前回の「C# より VB.NET の方が好きなところ」の逆パターンです。時間がないので、同じような言い回しで書いてしまいます。
  VB (VB.NET) と C# を比較するようなスレッドが未だに良くあがります。その時の (手抜き) 説明のためのメモであります。気付く度に更新しちゃいますので、生温かく見守るかスルーしてください。あ、同じ言い回しw
  まずは、良し悪しは除いて、C# ならではの概念または機能をあげておきます。
C# ならでは (ではないかw) の概念または機能
  - 変数の宣言は '強制' される (C# に限らずだけど)
 
  - 型に対して厳密であることが '強制' される (ポリモーフィズムは除く)
 
  - 同じような動作をするパッケージ・名前空間が少なく統一感がある (揺らぎが少ない)
 
  - Main がすべての始まりなのだよ (VB ではデフォルトで Application Framework に隠蔽されている)
 
  - 遅延バインディングのような動作は容易ではない (だが、それがいいッ!!)
 
  - 明示的な静的 (static) クラスの存在 (C# に限らないけど、2.0 から加わった)
 
  - 空のブロックを作ることができる (VB だと専用の機構がない)
 
  - 値の代入が式である (i1 = i2 = i3 = 0 という書き方が可能)
 
  - 三項演算子 (x ? y : z) の存在 (最近は使わないようにしています)
 
  - Null 合体演算子 (x = y ?? z) の存在
 
  - 引数には ref のほかに out が存在する (ref より out を使おう)
 
  - 値渡し・参照渡しのみが違うメソッドをオーバーロード可能 (やめようぜ。な!!)
 
  - インクリメント・デクリメントが可能 (VB では i += 1 という書き方までは可能)
 
  - 左シフト、右シフト演算子の存在
 
  - 大文字小文字の区別がある (VB にはない)
 
  - 文の終端にセミコロンが必要 (VB は通常 1 行 1 文)
 
  - 文の終端はセミコロンで明示するため、文が複数行に及ぶ際にも特に何もしなくても良い (VB では、アンダーバーが必要)
 
  - 複数行コメントアウトが言語側で用意されている (VB にはない)
 
  - extern エイリアスで、完全修飾名が同じものを含むアセンブリが使い分け可能
 
  - fixed ステートメントの存在
 
  - volatile キーワードの存在
 
  - extern キーワードの存在 (VB にはないけど、別にどうでも良い話)
 
  - unsafe キーワードの存在
 
  - stackalloc キーワードの存在
 
  - イテレータ (Iterator | 反復子) の存在
 
  - 匿名メソッド (Anonymous Methods) の存在
 
  - キーワードが Camel スタイルなのが、C 出身者にとっては読みやすい
 
  - キーワードが少なくてシンプルなのが、時と場合と人によっては読みやすい (シンプルさは Java には負ける)
 
  - キーワードが若干 CLR 寄り (というか、メタ属性名寄りというか)
 
  - C# 1.x 時代から、符号なしデータ型が完全にサポートされている (2.0 からは VB でもサポートされるようになった)
 
  - C# 1.x 時代から、オペレータ演算子のオーバーロードが可能 (2.0 からは VB でもサポートされるようになった)
 
  - C# 1.x 時代から、as 演算子がある (2.0 からは VB にも TryCast として追加された)
 
  - C# 1.x 時代から、contine ステートメントがある (2.0 からは VB にも追加された)
 
  - C# 1.x 時代から、using ステートメントがある (2.0 からは VB にも追加された)
 
  - C# 1.x 時代から、Visual Studio にて XML コメントに対応 (2.0 からは VB にも追加された)
 
  他にもいっぱいありますが、時間がないのでこの辺で失礼します。個人的に好きなところは、また時間がある時にでも続きを書いておきます。
関連リンク