我已经在维护的某些代码中看到了两者,但是不知道它们之间的区别。有一个吗?
让我补充一点,myCustomer是Customer的实例
Answers:
两种情况下的结果在您的情况下完全相同。从派生的是您的自定义类型System.Type
。唯一真正的区别是,当您要从类的实例获取类型时,可以使用GetType
。如果您没有实例,但是知道类型名称(只需要System.Type
检查或比较实际的名称),则可以使用typeof
。
编辑:让我补充一点,对调用的GetType
获取在运行时解决,而typeof
在编译时解决。
typeof在编译时执行,而GetType在运行时执行。这就是这两种方法的不同之处。这就是为什么在处理类型层次结构时,只需运行GetType即可找出类型的确切类型名称。
public Type WhoAreYou(Base base)
{
base.GetType();
}
typeof运算符将类型作为参数。它在编译时解决。GetType方法在对象上调用,并在运行时解析。第一种用于需要使用已知类型的类型,第二种用于在不知道对象类型的情况下获取对象的类型。
class BaseClass
{ }
class DerivedClass : BaseClass
{ }
class FinalClass
{
static void RevealType(BaseClass baseCla)
{
Console.WriteLine(typeof(BaseClass)); // compile time
Console.WriteLine(baseCla.GetType()); // run time
}
static void Main(string[] str)
{
RevealType(new BaseClass());
Console.ReadLine();
}
}
// ********* By Praveen Kumar Srivastava