.NET[C#]中类型检测是用:typeof,GetType,还是is?

.NET 作者: Rector 发布时间: 2018-01-02 13:37:00 5阅读 0评论 0收藏 收藏本文

.NET[C#]中类型检测是用:typeof,GetType,还是is?

很多人的书写方式如下:

Type t = typeof(obj1);
if (t == typeof(int))
{
    //处理逻辑代码
}

你也可能写成这样的:

if (obj1.GetType() == typeof(int))
{
    //处理逻辑代码
}

或者是:

if (obj1 is int)
{
    //处理逻辑代码
}

那么到底该如何使用?typeof,GetType,is它们分别有什么区别吗?

首先,typeof,GetType,is 是三个分别不同的概念:

  • typeof 是用于获取类型 System.Type 对象的名称的;
  • GetType 是一个用于获取表达式的运行时类型的;
  • is 关键字将会返回实例是否在继承树中的判断值(布尔值:true 或者 false)

如下示例:

class Animal { } 
class Dog : Animal { }

void PrintTypes(Animal a) { 
    print(a.GetType() == typeof(Animal)) // false 
    print(a is Animal)                   // true 
    print(a.GetType() == typeof(Dog))    // true
}

Dog spot = new Dog(); 
PrintTypes(spot);

转载请注明:图享网 » .NET[C#]中类型检测是用:typeof,GetType,还是is?

分享扩散:

文章评论

获取验证码