3

VB 6.0では、誰かがプログラムを作成しました。そしてそのプログラムで、彼は使用しました

If tmpVar <> "" Then

ええ、6.0 では非常にうまく機能しました。
If tmpVar has string、 できます。
If tmpVar has double、それも機能します。

vb 6.0では、""nullのようなものを意味すると思います。したがって、tmpVar が anyValue を持っていても、それは機能します。しかし、このプログラムを.Netに変換したとき. それはもう機能しません

.Net では、"" は double と比較できないためです。""In .Netは、vb 6.0 のように null ではなく単なる文字列だと思います

だから私はNothingの代わりに使用しました""。しかし、それにも問題があります。

たとえば、これを使用すると

If tmpVar <> Nothing Then

問題ないようです。でも、tmpVar数字が あると、考えて同じ0なのでうまくいきません。私はそれを望んでいませんでした。cuz 0 と何も変わらない。しかし、彼らは同じだと思っています。Nothing0

だから私は再び私のプログラムを変更しました

If tmpVar IsNot Nothing Then

うん。また問題ないようです。ただし、「」がある場合tmpVarは機能しません。

結論として、vb 6.0 では、これ""は null のように空であることを意味します。そしてそれはanytypeと比較できます。

しかし、変換後、vb.net では、これ""は null のように空であることを意味しません。それはただの文字列です。doubletype と比較することはできません。に変更""しましたNothingが、vb 6.0 とは異なり""ます。そして、上で例を挙げました。なので、この解決策を知っている人がいたら教えてください。それは私を夢中にさせます。

4

2 に答える 2

2

tmpVarは であるため、次のように、比較するタイプObjectに使用する必要があります。TryParse

Dim number As Double

If Double.TryParse(tmpVar.ToString(), number) Then
    ' Use number here, because tmpVar could successfully be cast to a Double type
Else
    ' tmpVar could not successfully be cast to a Double type, so raise exception or message to user
End If
于 2013-10-09T20:24:27.810 に答える