处理 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
方法
这是场景,
我有一个 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
方法