2015-01-13 59 views
0

這裏是場景,等於與當處理GetType()

我有一個silverlight C1 Datacolumn,我想檢查它的類型。

我知道有兩種方法可以這樣做:

SilverLightColumn.DataType.Equals(GetType(Decimal)) 

而且

SilverLightColumn.DataType Is GetType(String) 

的.DataType是System.Type的。

一種比另一種更好嗎,還是它們是相等的?

或者,我是完全錯誤的,有一種更好的方法來檢查類型?

+1

取決於什麼你想完成。發佈後,既沒有什麼不同,因爲Decimal和String都是密封類型,所以不存在Is操作符會喜歡你不喜歡的類型的任何風險。堅持使用Equals直到找到使用Is的令人信服的理由。 –

+0

我明白了,謝謝漢斯。 – Feign

回答

2

它們不等價。如果你有以下

Class Foo 
    '... 
End Class 

Class Bar Inherits Foo 
    '... 
End Class 

DataType類型是Bar的類型,然後

SilverLightColumn.DataType Is GetType(Foo) 

將返回true,但是

SilverLightColumn.DataType.Equals(GetType(Foo)) 

將返回false。 Is將爲該類型或從其繼承的任何類型返回true,Equals必須是完全相同的類型。

+0

感謝您的解釋! – Feign

0
SilverLightColumn.DataType Is GetType(String) 

Is將允許任何類型的繼承fronm它

SilverLightColumn.DataType = GetType(String) 

=只允許精確匹配

您還可以使用TypeOf操盤的GetType方法