2012-10-30 20 views
7

Aşağıdaki neden VB.NET'te derleme yapmıyor?VN.NET'te IsNullOrEmpty nasıl kullanılır?

If String.IsNullOrEmpty(strTest) Then 
+0

derleyici diyor: 'Argüman parametresinin 'değer' 'Public Shared Function IsNullOrEmpty (As String değeri) As Boolean' için belirtilmedi .Bu yüzden tahmin edebilirsiniz çünkü bu yöntemin "değeri" parametresi için bir argüman belirtmediniz. Söylemek istediğim, (çoğu zaman) derleyicinin size kodunuzda neyin yanlış olduğunu söylemesidir. – sloth

cevap

23

IsNullOrEmpty 'paylaşılan' olduğunu.

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

String.IsNullOrEmpty bir (C# veya statik) paylaşılan bir yöntemdir: Eğer bu şekilde kullanmalıdır böylece

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

Bunu yaptığımda, çalışma zamanında bir NullPointerException yükseltilebileceğini söylüyor. – CJ7

+1

@ CJ7 Çünkü "strTest" değerini bir değer ayarlamadan (ki * bir hata olabilir) kullanırsınız, bu yüzden her zaman 'Hiçbir şey' değildir. Dim strTest As String = Nothing' kullanarak ör. onu açıkça 'Hiçbir şey' olarak ayarla. – sloth

+0

@ Mr.Steak: Bu biraz garip görünüyor çünkü eğer onu bir şeye ayarlamazsam, yine de "Nothing" olacak. Neden onu açıkça 'Nothing' olarak ayarlamalıyım - hiçbir anlam ifade etmiyor! – CJ7

6

Aslında sadece boş bir dizeye karşılaştırabilirsiniz:

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

Eğer strTest 'hiçbir şey' değilse? 'IsNullOrEmpty' açık bir şekilde strTest’in“ hiçbir şey ”olup olmadığını kontrol eder. İfadeniz bunu kontrol etmiyor. –

+5

Aslında, boş bir dizgeye karşı dize karşılaştırması, VB'de de hiçbir şey için true olarak dönecektir. Bana inanmıyorsan onu dene. Ya da belki de bu sizi ikna ediyor: http://stackoverflow.com/questions/2633166/nothing-string-empty-why-are-these-equal –

+0

+1 @ThorstenDittmar, Rolf bu konuda haklı. VB.Net dize karşılaştırmaları yaparken (ve diğer yerlerde de) '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '= '' davranır. – MarkJ