2010-10-25 15 views
18

Jak mogę porównać typ danych typu w VB.NET? Mój kod:Porównanie typów w VB.NET

Private Function Equal(ByVal parameter As String, ByVal paramenterName As String, ByVal dataType As Type) As String 

    If dataType = String Then 
     return 1; 
    End If 

End Function 

Jakieś pomysły?

+0

można wybrać inną odpowiedź jak wybrana odpowiedź została wybrana ma błąd składni w VB.NET? – thecoolmacdude

Odpowiedz

5

Przyjęta odpowiedź zawiera błąd składni. Oto poprawne rozwiązanie:

If dataType = GetType(String) Then 
    Return 1 
End If 

Albo

If dataType.Equals(GetType(String)) Then 
     Return 1 
End If 

Albo

If dataType Is GetType(String) Then 
    Return 1 
End If 

Ostatnim sposobem jest prawdopodobnie najlepszym sposobem, aby sprawdzić, ponieważ nie będzie wyjątek, jeśli obiekt ma wartość null.

zobaczyć również https://msdn.microsoft.com/en-us/library/system.object.gettype(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

25
If dataType = GetType(String) Then 
    return 1; 
End If 
+3

Wystąpił błąd kompilacji podczas wypróbowania tego w VS 2013 Express - sugerowana poniżej funkcja "type Is GetType()" zadziałała jednak dla mnie. –

+3

Cześć Darin, twoje rozwiązanie wydaje się nie być już ważne w VB.NET. Jako zaakceptowaną odpowiedź, czy możesz ją zaktualizować, aby pozostała ważna? – Sheridan

+0

Błąd składniowy. Nie powinien zawierać półkola, ale śmieszne zasady StackOverflow nie pozwalają na edycję jednej postaci w nieprawidłowej odpowiedzi. – thecoolmacdude

22
If datatype Is GetType(String) Then 
    'do something 
End If 

Zastępca Is dla = i wszystko działa

2

To chyba najlepszy sposób, aby to zrobić w VB.

If dataType Is String Then 
    return 1 
End If 
+0

Czy to się skompilowało, kiedy próbowałeś? – LarsTech

+0

To nie zadziała. Musisz użyć GetType (String), ponieważ operator Is porównuje dwa obiekty, a String jest typem, a nie obiektem. – ohgodnotanotherone