2012-10-30 3 views
7

다음은 VB.NET에서 컴파일되지 않는 이유는 무엇입니까?VB.NET에서 IsNullOrEmpty를 사용하는 방법?

If String.IsNullOrEmpty(strTest) Then 
+0

컴파일러는 말한다 :'인수 매개 변수의 '가치' '공공 공유 기능 IsNullOrEmpty (문자열로 값) 부울로'지정되지 그래서 당신은 그 메소드의 'value'매개 변수에 대한 인수를 지정하지 않았기 때문에 그것이라고 추측 할 수 있습니다. 내가 말하고자하는 것은 컴파일러가 (대부분의 경우) 컴파일러가 코드에 무엇이 잘못되었는지를 알려주는 것입니다. – sloth

답변

23

IsNullOrEmpty은 '공유'한다.

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

String.IsNullOrEmpty는 (C#으로, 또는 정적) 공유 방법 : 당신이 그런 식으로 사용해야하므로

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

내가 할 때 런타임에 NullPointerException을 발생시킬 수 있다고합니다. – CJ7

+1

@ CJ7 값을 설정하지 않고 strTest를 사용하기 때문에 (항상 실수 일 수 있음) 항상 Nothing입니다. 'Dim strTest As String = Nothing'을 사용하여 주위를 둘러 볼 수 있습니다. 명시 적으로'Nothing'으로 설정합니다. – sloth

+0

@ Mr.Steak : 조금 이상하게 보입니다. 아무 것도 설정하지 않으면 어쨌든 '아무것도 아닐 것'입니다. 명시 적으로 Nothing으로 설정해야하는 이유는 무엇입니까? – CJ7

6

당신은 실제로 단지 빈 문자열로 비교할 수 있습니다

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

'strTest'가'nothing'이라면? 'IsNullOrEmpty'는'strTest'가'nothing'인지 여부를 명시 적으로 확인합니다. 귀하의 진술은 이것을 확인하지 않습니다. –

+5

실제로 빈 문자열에 대한 문자열 비교는 VB에서 Nothing에도 true를 반환합니다. 당신이 나를 믿지 않는다면 시도해보십시오. 아니면 이것으로 당신을 확신시킬 수 있습니다 : http://stackoverflow.com/questions/2633166/nothing-string-empty-why-are-these-equal –

+0

+1 @ThorstenDittmar, Rolf가 바로 이것입니다. VB.Net은 문자열 비교를 할 때 (그리고 다른 곳에서도)'Nothing'을 동일한'' "'으로 취급합니다. – MarkJ

관련 문제