C# 性能问题:typeof(MyClass)与this.GetType()的比较

C# 性能问题:typeof(MyClass)与this.GetType()的比较,c#,.net,performance,C#,.net,Performance,在第一个示例中,作者使用typeof(MyApp)获取包含类的类型MyApp。是否有理由不使用性能方面的this.GetType()?因为在我看来,this.GetType()在复制到另一个类时,避免了潜在的复制粘贴错误,所以更安全。撇开性能问题不谈,在提供的示例中,GetType甚至不是一个选项,因为它是一个实例方法;不能从字段初始值设定项调用它。在任何情况下,由于目的是从静态“上下文”初始化静态字段,因此从逻辑上讲,此引用不可用-因此,沿着静态构造函数路线进行操作也无助于允许GetType

在第一个示例中,作者使用
typeof(MyApp)
获取包含类的类型
MyApp
。是否有理由不使用性能方面的this.GetType()?因为在我看来,
this.GetType()
在复制到另一个类时,避免了潜在的复制粘贴错误,所以更安全。

撇开性能问题不谈,在提供的示例中,
GetType
甚至不是一个选项,因为它是一个实例方法;不能从字段初始值设定项调用它。在任何情况下,由于目的是从静态“上下文”初始化静态字段,因此从逻辑上讲,
引用不可用-因此,沿着静态构造函数路线进行操作也无助于允许
GetType

// Can't use GetType() - the this reference is not available.
private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
typeof(Foo)
是一种静态类型查找;本质上,它发生在编译时,因此您只能获得显式命名的类型


GetType()
是一种动态类型查找;它是一个在运行时被调用的虚拟方法,即使您使用多态性,它也会为您提供确切的类型。从理论上讲,它是“慢”的,但它给了你从
typeof(t)
中得不到的东西。如果您的设计需要一个或另一个,那么速度将不是一个因素。

当您没有实例时,只有TYPEOF可用,不是吗?您是对的,我太愚蠢了,没有注意到
static
关键字:)@Ani,但是当对象和类型名称都已知时,性能又如何呢?