猿问

类型检查:type of,GetType,还是is?

类型检查:type of,GetType,还是is?

我见过许多人使用以下代码:

Type t = typeof(obj1);if (t == typeof(int))
    // Some code here

但我知道你也可以这么做

if (obj1.GetType() == typeof(int))
    // Some code here

或者这个:

if (obj1 is int)
    // Some code here

就我个人而言,我觉得最后一个是最干净的,但是有什么是我遗漏的吗?哪一个是最好的使用,还是个人的喜好?


千巷猫影
浏览 428回答 3
3回答

慕尼黑5688855

1.Type t = typeof(obj1);if (t == typeof(int))这是非法的,因为类型只适用于类型,而不是变量。我假设obj 1是一个变量。因此,在这种情况下,type of是静态的,它在编译时而不是运行时工作。2.if (obj1.GetType() == typeof(int))如果obj 1恰好是int类型,则这是正确的。如果obj 1派生自int,则if条件将为false。3.if (obj1 is int)如果obj 1是int,或者派生自一个名为int的类,或者它实现了一个名为int的接口,则这是正确的。
随时随地看视频慕课网APP
我要回答