2010-11-22 12 views
8

本当に退屈な質問です。申し訳ありませんが、私はまだそれを知らないのです;)私はいつもstring.emptyを試しましたが、10進数ではエラーが発生します。VB intが空であることを確認してください

機能はありますか?残念ながら、最も簡単な質問のために、

答えて

15

あなたのタイトル(およびタグ)は "int"について質問しますが、あなたの質問には "小数"のエラーが表示されています。いずれにしても、value typeInteger,Decimalなど)の場合、「空」となることはありません。可能であればに設定することはできません(Stringまたはクラスのように)reference typeとすることはできません。代わりに、値型には、その型の変数をデフォルト値に自動的に初期化する暗黙のデフォルトコンストラクタがあります。IntegerおよびDecimalなどの数値の場合は0です。他のタイプの場合は、this tableを参照してください。

ですから、値型は、次のコードで初期化されているかどうかを確認することができますmySecondFavoriteNumberは自動的に0に初期化されていることを

Dim myFavoriteNumber as Integer = 24 
If myFavoriteNumber = 0 Then 
    ''#This code will obviously never run, because the value was set to 24 
End If 

Dim mySecondFavoriteNumber as Integer 
If mySecondFavoriteNumber = 0 Then 
    MessageBox.Show("You haven't specified a second favorite number!") 
End If 

注意(Integerのデフォルト値)舞台裏でコンパイラのため、IfステートメントはTrueです。実際には、上記mySecondFavoriteNumberの宣言は、以下の文と同じです。

もちろん
Dim mySecondFavoriteNumber as Integer = 0 


、あなたはおそらく気づいたとして、その人の好きな番号が実際 0であるかどうかを知る方法はありません、彼らがまだ好きな番号を指定していないのならば。 あなたは本当にとして代わりに変数を宣言、あなたはNullable(Of T)を使用することができ、Nothingに設定することができる値の型が必要な場合:

Dim mySecondFavoriteNumber as Nullable(Of Integer) 

そして、次のように割り当てられているかどうかをチェックする。

If mySecondFavoriteNumber.HasValue Then 
    ''#A value has been specified, so display it in a message box 
    MessageBox.Show("Your favorite number is: " & mySecondFavoriteNumber.Value) 
Else 
    ''#No value has been specified, so the Value property is empty 
    MessageBox.Show("You haven't specified a second favorite number!") 
End If 
+0

ただ、サイドノートNULL可能である:実際にあなたが* *値の型に何を割り当てることはできませんVB.Netで。しかし、その場合、Nothingは 'null'ではなく 'default(T)'を意味するわけではないので、整数の場合は0と同じです。 – jeroenh

+0

@jeroenh:そうです。参照型*でできるように 'Nothing' *に設定することはできないと言ったことに注意してください。値の型を 'Nothing'に設定すると、その型がデフォルトの型に初期化されます。要点は、値型のためのそのような「ヌル」状態または「空」状態が存在しないことである。それらは常に値を含みます。 –

+0

最近、「Dim mySecondFavoriteNumber as Integer?」は、「Dim mySecondFavoriteNumber as Nullable(Of Integer)」と同じです。 –

0

まあ、数のデフォルト値は0になり、Googleで何も答えはありませんが、あなたもこれを試すことができます場合

int x = 123; 
String s = "" + x; 

をして、長さを確認しますか、文字列 's'は空です。

2

はたぶんあなたが探していることは

Dim foo As Nullable(Of Integer) = 1 
    Dim bar As Nullable(Of Decimal) = 2 

    If foo = 1 Then 
     If bar = 2 Then 
      foo = Nothing 
      bar = Nothing 
      If foo Is Nothing AndAlso bar Is Nothing Then Stop 
     End If 
    End If 
関連する問題