確かに一般的な構文には違いがありますが、他にどのような重要な違いがありますか? いくつかの違いがありますよね?
14 に答える
リンクされた比較は非常に徹底していますが、主な違いに関する限り、次の点に注意してください。
C# には無名メソッドがあり、VB にもこれらのメソッドがあります。C#にはyieldキーワード(イテレータブロック)がありますVB11はこれを追加しました- VB は暗黙的な遅延バインディングをサポートしています(C# では dynamic キーワードを介して明示的な遅延バインディングが行われています)。
- VB は XML リテラルをサポートします
- VB は大文字と小文字を区別しません
- VB 用のすぐに使えるコード スニペットの追加
C# 用のすぐに使えるリファクタリング ツールVisual Studio 2015 では、VB と C# の両方に同じリファクタリング ツールが提供されるようになりました。
一般に、MS がそれぞれに焦点を当てていることは異なります。これは、2 つの言語が非常に異なる対象者を対象としているためです。このブログ投稿には、対象読者の優れた要約があります。Microsoft から入手できるツールの種類が決まるため、自分がどの対象者に属しているかを判断することをお勧めします。
このトピックは、.Net 2.0 がリリースされて以来、多くの面で取り上げられてきました。読みやすい要約については、このウィキペディアの記事を参照してください。
これは構文と見なされる場合がありますが、VB.NET では大文字と小文字が区別されますが、C# では大文字と小文字が区別されます。
これは非常に包括的なリファレンスです。
C#3のシンタックスシュガーは実際にバーを前進させましたが、VB.NetのLinq to XMLのもののいくつかは非常に素晴らしく、複雑で深くネストされたXMLの処理をもう少し許容できるものにしていると言わなければなりません。少しだけ。
明らかな違いの1つは、拡張メソッドの処理方法にあります(Vb.Netは、実際にはC#では許可されていないものを許可します-拡張メソッドがrefとして定義されているタイプを渡します): http: //blog.gadodia.net/extension-メソッド-in-vbnet-and-c/
私はあなたがググることができると思っているので、あなたが探しているのは他のサイトへのリンクではないと思います.
私の答え: 開発者の歴史に基づいて選択してください。C# は Java に似ており、おそらく C++ に似ています。VB.NET は VB プログラマーにとってより簡単でしたが、古い VB から新しい .NET プログラマーが来ていないので、それはもはや問題ではないと思います。
私の意見では、VB は C# よりも生産性が高く、生産性ツール (インテリセンスなど) の点では常に先を行っているようです。もちろん、自分が c# を好むことを知っている人は質問しません。c# はおそらく彼にとって正しい選択です。
構文は別として、それほど多くはありません。どちらもまったく同じ IL にコンパイルされるため、何かを VB としてコンパイルし、それを C# に反映させることができます。
明らかな違いのほとんどは、構文糖衣です。たとえば、VB は動的型をサポートしているように見えますが、実際には C# と同じくらい静的です。VB コンパイラがそれらを把握します。
Visual Studio は VB での動作が C# での動作とは異なります。多くの機能が隠されていますが、バックグラウンド コンパイルが追加され (小規模なプロジェクトには最適ですが、大規模なプロジェクトにはリソースを浪費します)、スニペットのサポートが改善されています。
C#3 でのコンパイラの「魔法」がますます増えているため、VB.Net は本当に遅れをとっています。C# になくて現在 VB にある唯一のものはhandles
キーワードです。これは議論の余地のある利点です。
@Tom - 本当に便利ですが、少し時代遅れです - VB.Net は XML ドキュメントもサポートするようになりました'''
@Luke - VB.Net にはまだ anon-methods がありませんが、ラムダをサポートするようになりました。
VB.NET は try...catch タイプの例外処理をサポートしていますが、それでも VB6 の ON ERROR に似たものがあります。ON ERROR は深刻に悪用される可能性があり、ほとんどの場合、try...catch の方がはるかに優れています。ただし、ON ERROR は、エラーをトラップしてデコードし、最後の "再試行" が単純な 1 行で済む COM タイムアウト操作を処理する場合に役立ちます。try...catch でも同じことができますが、コードはかなり複雑です。
このトピックについては、wikipedia と harding で簡単に説明されています。
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
ざっと見て、それについてメモをとってください。
私の意見では、最大の違いは、C# でアンセーフ コードを記述できることです。
明らかな違いの1つは、拡張メソッドの処理方法にあります(Vb.Netは、実際にはC#では許可されていないものを許可します-拡張メソッドがrefとして定義されているタイプを渡します): http: //blog.gadodia.net/extension-メソッド-in-vbnet-and-c/
それがILに到達すると、すべてがビットになります。大文字と小文字を区別しないのは、単なるプリコンパイラ パスです。しかし、一般的なコンセンサスは、vb の方がより冗長であるということです。C# を記述できる場合は、目と手を節約し、より少量のコードを記述して同じことを行ってみませんか。
はい、VB.NET は VB6 の問題のほとんどを修正し、適切な OOP 言語にしました。C# と同様の機能。私は C# を好む傾向にありますが、古い VB ON ERROR コンストラクトが COM 相互運用タイムアウトの処理に役立つことがわかりました。ただし、賢明に使用するもの - ON ERROR は簡単に悪用されます!!