处理 GetType() 时等于与是

Equals vs. Is when dealing with GetType()

这是场景,

我有一个 silverlight C1 数据列,我想检查它的类型。

我知道有两种方法:

 SilverLightColumn.DataType.Equals(GetType(Decimal)) 

 SilverLightColumn.DataType Is GetType(String)

.DataType 是 System.Type。

一种方式比另一种方式更好,还是它们等效?

或者,我是不是完全错了,有更好的方法来检查类型吗?

它们不等价。如果你有以下

Class Foo
   '...
End Class

Class Bar Inherits Foo
   '...
End Class

DataType 的类型是 Bar 的类型,然后

SilverLightColumn.DataType Is GetType(Foo)

将 return 正确,但是

SilverLightColumn.DataType.Equals(GetType(Foo)) 

将 return 错误。 Is 将 return 对于该类型或从它继承的任何类型为真,Equals 必须是完全相同的类型。

SilverLightColumn.DataType Is GetType(String)

Is 将允许从它继承的任何类型

SilverLightColumn.DataType = GetType(String)

= 只允许完全匹配

您也可以使用 TypeOf 运算符代替 GetType 方法