2009-07-04 3 views
6

私にとっては、Javaエコシステムを開発することで長年にわたって請求書を支払っていました。しかし、数年前から、私は主に.Net空間で作業していました。当初、.Net世界への私の移行は、VB.Netコードの作成と保守で構成されていました。 VSは、私がEclipse/Javaコンボで長年働いていたことから期待されていた素晴らしいインテリセンスサポートのほとんどを提供してくれました。最終的に私の雇用主はC#で新しい開発を行うことに決めました。 C#のインテリセンスサポートの私の最初の印象は、魅力的ではありませんでした。時には、VSにはC#用のバックグラウンドコンパイラがないようですが、時にはそこにいくつかのバックグラウンド処理があることを示すスマートなことがありますが、実際に意味のある方法で生産性を向上させるには十分ではありません。この2つの言語間のインテリセンスサポートに関するこの矛盾の技術的な理由はまったくありませんか?なぜIntelliSenseはVB.NETと比較してC#がサポートされていませんか?

+2

私が見つけた唯一の問題は、C#が大文字と小文字を区別する言語なので、時には正しく起動しないことです。あなたは何を意味するのかの例を投稿できますか? – Eric

+2

これはVB.NETに関するもので、最初からバックグラウンドでコンパイルされています。 –

+1

C#のIntellisenseは、ビルド/再コンパイルの前でさえ、ソースコードの編集後に更新されます。そういうわけで私はOPのマシンが何らかの理由で単に遅いのかどうか疑問に思った。 – ChrisW

答えて

14

C#とVBの間にはしばらくの間ギャップがあります。 VBは多くのコードを生成します。たとえば、「If」ステートメントを終了した後Enterキーを押すと、その行の最後に「Then」が自動的に追加され、「End If」部分で終了します。 C#では、開始と終了の{}中括弧を追加するのはあなた次第です。

VBはC#よりずっと前にバックグラウンドでコンパイルされています。実際、それはそのような機能を提供するReSharperを使用する際の主要な魅力的な要因の1つでした。しかし、VS 2008/.NET 3.5 SP1以降はすべて変更されました。あなたはそのhere程度スコット区の記事を読むことができますが、私は、関連する部分を貼り付けます:

「C#のコードエディタは、以前 が明示的に必要な多くの セマンティックコードの問題を特定し、 ディスプレイ赤い波線エラーたとえば を宣言して使用し、 C#コードエディタで未知の型を使用しようとすると、ビルドを行うまで コンパイルエラーが表示されません SP1で今すぐ表示されますライブ赤色 すぐにちらつきエラー( 明示的なコンパイルが必要)

CodeRushまたはReSharperを使用すると、VB開発者にシームレスな移行があるように感じさせる共通の文が自動的に作成されるようになります。

これは技術的な懸案事項にはあまり対応していませんが、開発チームは異なり、必ずしも同じことをするわけではありません。言い換えれば、共通のアプローチが存在する可能性は低いです。 This blog post抜粋は、VBチームのテクニカルリードで、これをサポートしています。

「バックグラウンドコンパイル」入力時にあなたにエラーの 完全なセットを提供しますVBで 機能です。 VBとC#の予告の間で前後にこれを移動しますが、VB-のみ 開発者はC#などの他の の言語は常に100%正確インテリセンス あなたを与えていないと はいつもあなたを与えていないことを認識しないことがあり 人々コードに存在するすべての エラーこの は、インテリセンスのエンジン が、別の縮尺のコンパイラ で、 バックグラウンドでフルコンパイルしないためです。Visual Studioがあなたが完全に正確 インテリセンスを与える私たちはすぐに が完全 正確なエラーが発生したタスクリストを移入することが可能と に私たちを許可する、 アイドル座っているようVBは、他の一方で、 が終了する 最初からプロジェクト全体をコンパイルします。

最後の注意点は、C#/ VB/F#のチーム、彼は言語がもはや異なる方向にオフ逸脱しようとしていると自分のを共有するために開始されますどのように強調していないルカボローニャ、グループPMとrecent Channel9 interviewです類似点。それで未来が素晴らしいものを保持しているように見えます!

+1

これは悪い考えであると思う私の脳のいくつかの小さな、珍しいところに小さな声があります。どうして?これらの言語は、実用的な理由から類似していません。彼らは独立して進化することが許されるべきです。 –

+0

私はまだこの答えのすべてを読んでいないと認めなければなりませんが、最初の段落は完全に正確ではないようです。基本的には、VB - C#のIf文のコードスニペットのように聞こえるものには、次のようなスニペットがあります。「if」と入力してタブ全体を生成します。他にも同様のスニペットがたくさんあります。 –

+1

悲しいことに、私はこれがVB.Netの死の刻印だと思う。 MSはそれを2位/ 3位の地位に格下げしている。私は古い学校のc/C++/java/c#(とunixの人)ですが、VB.Netを使って作業した後、プログラミングコミュニティでは多くの人に間違いのある言い訳をしています。私はそれを逃すだろう。 –

関連する問題