前回の「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 にも追加された)
他にもいっぱいありますが、時間がないのでこの辺で失礼します。個人的に好きなところは、また時間がある時にでも続きを書いておきます。
関連リンク