2010-12-07 6 views
4

VB.NETはコンパイル:薄暗いintResultとして整数=何も

Dim intResult As Integer = Nothing 

C#がない:

int intResult = null; // cannot convert 

結果は、最終的にはMSILに行く方法は?

If intResult > Nothing Then 

EDIT

OK、MS says

変数に何を割り当てていないその宣言のデフォルト値に設定しますVBのコードがOKで、よりがあること

詳細タイプ。

しかし、それは何についてのNothingcomparationを伝えます。 VB.NETの

答えて

8

Nothingは、実際にはC#のdefault(Type)に相当します。

したがってint intResult = default(int);はC#と同等です。

VB.NET Language Referenceによると、「変数にNothingを割り当てると、宣言された型の既定値に設定されます。その型に変数メンバが含まれている場合は、すべて既定値に設定されます。


編集:Nothingとの比較についてintResultのコンパイル時の型がタイプした場合、0のデフォルト値を持っているInteger、ですので 私はintResult > Nothingを推測しているが、intResult > 0として解釈されますintResultはコンパイル時に知られていません(例えば、ボックス化されたInteger)、これはコンパイルされないと思われます。

同様の例(Nothing < 2)については、VB.NET言語リファレンスページの下部にあるCommunity Content sectionを参照してください。

+0

また、C#のint型をnullにすることはできません。 –

+0

@Chuck:どちらもVBではありません。 – serhio

+0

+1 - この投稿を見るhttp://stackoverflow.com/questions/1976112/is-nothing-equal-to-default – StuartLC

0

人工知能は、C#でnullableではありません。もしあなたがしたい場合は、System.Nullable<int>の短い灰色を使用することができます

int? result = nullです。

+0

私は知っている、ありがとう、質問はnullable型ではないが、VB.NETはどのようにnullableでない型はnull可能で、Nothingとintを比較する – serhio

関連する問題