2015-07-29 2 views
0
Imports System.Windows.Forms 

Module Module1 

    Sub Main() 
     Dim TextBox1 As New TextBox 
     Dim TextBox2 As New TextBox 
     If (GetType(TextBox1).Equals(GetType(TextBox2))) Then ' Error Here 
      Console.WriteLine("They are equal.") 
     End If 
    End Sub 

End Module 

Я знаю, GetType для объекта возвращает его тип. Но здесь GetType (TextBox1) вызывает ошибку. Мне нужно, чтобы переписать эту логику:GetType - VB.NET - Код вызывает синтаксическую ошибку

If (GetType(TextBox1).Equals(GetType(TextBox2))) Then ' Error Here 
    Console.WriteLine("They are equal.") 
End If 

Я написал так:

If TextBox1.GetType().FullName.Equals(TextBox2.GetType().FullName) Then ' Works fine 
    Console.WriteLine("They are equal.") 
End If 

Вы можете перезаписать логику?

If (GetType(TextBox1).Equals(GetType(TextBox2))) Then ' Error Here 
    Console.WriteLine("They are equal.") 
End If 
+1

ли вы имеете в виду использовать метод GetType(), например TextBox1.GetType()? –

ответ

2

В принципе, GetType() оператор ожидает имя типа, а не объект. Чтобы получить тип объекта, используйте его метод GetType(). IOW в своем коде вы можете:

GetType(TextBox) 

, но не может:

GetType(TextBox1) ' Won't compile! 

и должны:

TextBox1.GetType() 

Таким образом, ожидается ошибка, ваше решение прекрасно и ваша неудачная попытка повторной записи является ошибкой, как и ожидалось.

Для более подробного объяснения, проверьте:

https://msdn.microsoft.com/en-us/library/tay4kywk.aspx

1

GetType operator работает с именами типов, а не с именами переменных.

If (GetType(TextBox).Equals(GetType(TextBox))) Then 
    Console.WriteLine("They are equal.") 
End If 

Если вам нужно получить тип переменной, то, что у вас уже есть будет работать, хотя я не понимаю, почему вам необходимо позвонить FullName:

If TextBox1.GetType() Is TextBox2.GetType() Then 
    Console.WriteLine("They are equal.") 
End If 
+0

Думаю, нет необходимости писать «FullName», как вы уже упоминали. Этот код работает как ожидалось: –

0

Если Вы хотите, чтобы проверить, являются два объекта одинаковы, то используйте:

If TypeName(TextBox1).Equals(TypeName(TextBox2)) Then Console.WriteLine("They are equal.")