2012-10-30 10 views
7

Warum kompiliert sich das folgende in VB.NET nicht?Wie wird IsNullOrEmpty in VB.NET verwendet?

Dim strTest As String 
If (strTest.IsNullOrEmpty) Then 
    MessageBox.Show("NULL OR EMPTY") 
End if 
+0

Der Compiler sagt: 'Argument nicht für Parameter 'Wert' von 'Public Gemeinschafts-Funktion IsNullOrEmpty (Wert As String) As Boolean' angegeben .', Sie können also vermuten, dass Sie kein Argument für den Parameter "value" dieser Methode angegeben haben. Was ich sagen möchte, ist, dass der Compiler (meistens) Ihnen sagen wird, was mit Ihrem Code nicht stimmt. – sloth

Antwort

23

IsNullOrEmpty wird 'geteilt', so dass Sie es auf diese Weise verwendet werden soll:

If String.IsNullOrEmpty(strTest) Then 
3

String.IsNullOrEmpty ist eine gemeinsame (oder statisch, in C#) Methode.

Dim strTest As String 
If (String.IsNullOrEmpty(strTest)) Then 
    MessageBox.Show("NULL OR EMPTY") 
End if 
+0

Wenn ich das tue, heißt es, dass eine NullPointerException zur Laufzeit ausgelöst werden konnte. – CJ7

+1

@ CJ7 Das liegt daran, dass Sie 'strTest' verwenden, ohne einen Wert zu setzen (was * ein Fehler sein könnte *), so dass es immer' Nothing' ist. Sie können es umgehen, indem Sie 'Dim strTest As String = Nothing' z. um es explizit auf 'Nothing' zu setzen. – sloth

+0

@ Mr.Steak: das scheint ein bisschen komisch, denn wenn ich es nicht auf etwas setze, wird es sowieso nichts. Warum sollte ich es explizit auf 'Nothing' setzen müssen - ergibt keinen Sinn! – CJ7

6

Sie können tatsächlich vergleichen nur auf eine leere Zeichenfolge:

If strTest = "" Then 
    MessageBox.Show("NULL OR EMPTY") 
End If 
+0

Was ist, wenn 'strTest' nichts ist? 'IsNullOrEmpty' enthält explizit eine Überprüfung, ob' strTest' nichts ist. Ihre Aussage überprüft dies nicht. –

+5

Tatsächlich wird String-Vergleich gegen eine leere Zeichenfolge True für Nothing auch in VB zurückgegeben. Probieren Sie es aus, wenn Sie mir nicht glauben. Oder vielleicht überzeugt Sie das: http://stackoverflow.com/questions/2633166/nothing-string-empty-why-are-these-equal –

+0

+1 @ThorstenDittmar, Rolf hat Recht. VB.Net behandelt 'Nothing' als identisch' '' ', wenn Stringvergleiche (und auch an anderen Stellen) durchgeführt werden. – MarkJ

Verwandte Themen