2012-04-28 9 views
3

私は長い間VB.NET開発者であり、最近C#に切り替えました。私は、String.Left、またはRight、またはレジストリ(SaveSettingsおよびGetSettings)への保存のような高度な機能が顕著に欠けているような組み込みのVB.NET関数(.NETを6.0およびBASIC自体に先行する)のいくつかを見つけました。 。C#.NETとVB.NETの組み合わせの欠点

私がしたことは、VB.NETと同じソリューションで言語として新しいプロジェクトを作成し、基本的にはVB.NETで必要なすべての機能を再作成することでした。そして、私はそれを私が書いているC#コードに呼びます。

.NETでコードをコンパイルするのは同じCILになっているので、コードを記述した言語やパフォーマンスに問題はありません。

私は間違っていますか?

おかげ

+3

を参照してください。私はあなたがそれがあなたを助けることがわかるでしょう。 http://stackoverflow.com/questions/1133265/why-arent-more-applications-written-in-multiple-languages/1194192#1194192 –

+0

@Davidこれはすばらしい読書です。ありがとう!他の人が私のコードを修正しなければならない場合は、C#とvb.netの両方のためのリソースが必要であることがわかります。私が言及したような基本的な機能については、経験豊かな開発者のための挑戦ではないはずですが、 – Devmonster

+0

@MitchWheatそれは私自身のC#コードを書くのではなく、使いたいものです。私は知っている) – Devmonster

答えて

12

Microsoft.VisualBasicという名前の名前空間がありますが、あなたはまた、C#プロジェクトでそれを使用することができます。

string test = Microsoft.VisualBasic.Strings.Left("abc", 2); 

は、プロジェクトの参照にMicrosoft.VisualBasicを追加することを忘れないでください。

+0

VB6のほとんどすべての関数がこの名前空間に入っているので、これも私の考えを超えました。しかし、私はC#コードをすべてC#にして、VBのような他のプロジェクトのオブジェクトを呼び出して、きれいに保ちたいと思います。提案していただきありがとうございますが、 – Devmonster

+2

IMOはC#で 'Microsoft.VisualBasic'ネームスペースを使用しているので、プロジェクト全体でVB.NETとC#を混在させるよりも読みやすさと保守性が同等です。C#開発者は、これらのメソッドがMSDNによって何をしているのかを簡単に理解することができますが、VB.NETモジュールを高速に読み込むことはできません。さらに、このアセンブリは、VB.NETの一部ではなく、.NET Framework全体の一部です。 http://stackoverflow.com/questions/226517/is-the-microsoft-visualbasic-namespace-true-net-codeを参照してください。 – Hailei

0

私の経験では、ほぼ完全に好みの問題であり、言語での経験があります。パフォーマンスは重要ではないと推測するのは間違いありません。どちらの言語もILを生成する目的で構築され、CLRをターゲットにしています。

ある言語で完全にサポートされている一部の機能は別の機能でサポートされているため、言語を選択する際には他に議論の余地があります。また、いくつかの言語は、数学的計算のためのAPLのような特定の目的のためだけに表現力があります。

私が使用して、その後、それを構築するお勧めします
1

リフレクター/ ilspy/Microsoft.VisualBasic名前空間を使用している間、バックC#:)

0

にコンパイルするために何でも良い解決策は、VB.NETは、文字列が(同等の機能を持っています関数は1ベースではなく0ベースです)。

 string str = "abcdefg"; 

     string left = str.Substring(0, 2);    // Left(str, 2) 
     string right = str.Substring(str.Length - 2, 2); // Right(str, 2) 

はところで、レジストリのアクセス方法はMicrosoft.Win32名前空間にあります。このトピックを見てみましょう@Devmonster RegistryKeyなど

+0

C#で使用できないvb.netの "文字列関数"は、 '='の左半分に 'mid'を使用しています。たとえば、文字列の3番目と4番目の文字を変更するには、 'mid(myString、3,2)=" OK "'と言うことができます。実際の動作は本質的に 'myString = myString.SubString(0,2)&" OK "&myString.SubsString(4)'ですが、読みやすくなります。 – supercat

関連する問題