C#中 typeof, GetType(), is 之间的区别

2018/05/26 283

在使用C#中,你可能会经常用到它们,但是你知道它们之间的区别吗?

typeof(T)

通过类型名称获取类型信息。所以当我们想得到类型信息,但是只有类型名称时使用typeof(T)

UWP使用Frame.Navigate()进行页面跳转
定义如下
public bool Navigate(Type sourcePageType);
UWP会自动实例化页面,所以不需要我们创建页面对象,这种场景下,我们只知道类型,而没有实例,于是使用typeof()

GetType()

此方法来自object,通过调用此方法,我们会得到对象的类型信息,但是得到的是具体派生类的类型信息

is

如果实例处于继承树中,则返回true

代码示例

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);
评论