2010-10-25 37 views
18

Làm thế nào tôi có thể so sánh kiểu dữ liệu kiểu trong VB.NET? Mã của tôi:So sánh các loại trong 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 

Bất kỳ ý tưởng nào?

+0

Bạn có thể chọn câu trả lời khác với câu trả lời bạn đã chọn có lỗi cú pháp trong vb.net không? – thecoolmacdude

Trả lời

5

Câu trả lời được chấp nhận có lỗi cú pháp. Dưới đây là giải pháp đúng:

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

Hoặc

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

Hoặc

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

Cách cuối cùng có lẽ là cách tốt nhất để kiểm tra vì nó sẽ không ném một ngoại lệ nếu đối tượng là null.

Đồng thời xem 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

Tôi nhận được một lỗi biên dịch khi cố gắng điều này trong VS 2013 Express - gợi ý dưới đây để sử dụng "type Is GetType()" làm việc cho tôi, mặc dù. –

+3

Xin chào Darin, giải pháp của bạn dường như không còn hợp lệ trong VB.NET nữa. Là câu trả lời được chấp nhận, bạn có thể vui lòng cập nhật nó để nó vẫn hợp lệ không? – Sheridan

+0

Lỗi cú pháp. Không nên có dấu chấm phẩy nhưng quy tắc vô lý của StackOverflow sẽ không cho phép bạn chỉnh sửa một ký tự trong câu trả lời không hợp lệ. – thecoolmacdude

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

thay Is cho = và mọi thứ hoạt động

2

Đây có lẽ là cách tốt nhất để làm điều đó trong VB.

If dataType Is String Then 
    return 1 
End If 
+0

Dịch này có biên dịch khi bạn thử không? – LarsTech

+0

Điều này sẽ không hoạt động. Bạn phải sử dụng GetType (String), bởi vì toán tử Is so sánh hai đối tượng và String là một kiểu không phải là một đối tượng. – ohgodnotanotherone