C# と VB: イベント捕捉のやりかたの違いに戸惑う


C# を使ってみた時の感想です。

C# を使ってみた

会社で、「VB よりも C# のほうがいい」と言っていた人がいたので、どんなものなのかと思い C# を使ってみました。 業務では C# を使わず VB を使っています。

C# のよさ&悪さ

C# のよさは、コードの量が減ることかなと思いますが、 慣れるまではいまいち実感がわきません。 .NET Framework の上で使うことを考えると、 できることは VB とほとんど変わらないと思います。

小文字と大文字を区別するので、小文字の something というプロシージャと 大文字の SOMETHING というプロシージャを共存させられます。 そんな名前の付け方はしなさそうですけど。

partial なクラスがちょっとイけてるらしいです。 しばらく使ってみないとわかりません。

文字数は少ないけれど、プロシージャ等の括弧が1行を占領するので行数が多くなって見づらいです。 (この自動調整機能は設定変更可能らしい。)

VB のよさ&悪さ

VB はコードが長くなりがちですが、それだけ詳しく書いていることでもあり、読むだけでわかりやすいと思います。 それでも、たぶん慣れれば同じでしょう。 VB の Exit は便利ですね。 (参考: 第3回 VBがC#やJavaよりもさえている1つの事例)

VB は型変換が自動で行われるからダメだ! という話がありますが、 Option Strict をつければいいと思います。

大文字と小文字を区別しないので、 Shift をいちいち押さなくていいし、 大文字小文字を自動で修正してくれる。

VB 2008 のインテリセンスは、「よく使われる候補」と「すべての候補」がある。 一方でC# 2008 のインテリセンスはその区別がない。 このよしあしも、使ってみないとわからないかも。

困ったこと

VB では、コードを入力する画面の上のほうに、イベントハンドラを選択してイベントプロシージャを挿入するコンボボックスがありますが、 C# は少し違います。 挙動を理解するのに大分時間がかかりました。

C# では、フォーム上のコントロール(テキストボックス等)のプロパティ画面に、イベントというボタンがあります。 それをクリックして、お望みのイベントをダブルクリックします。 (参考:イベントを捕捉する)

Microsoft

同じ Microsoft の製品なら、使い方も統一してほしいと思います。 Visual C++ だったかも、 インテリセンスの挙動が VB とは違います。 VB では Enter を押すと確定&改行が行われるのに対し、 VC++ では確定のみ行われます。