C# 买这种类型的
在性能之前先担心正确性。如果有任何类派生自C# 买这种类型的,c#,C#,在性能之前先担心正确性。如果有任何类派生自TestClass,则不会得到相同的结果。在性能之前先担心正确性。如果有任何类派生自TestClass,则不会得到相同的结果。 谷歌快速搜索发现: GetType是在以下位置进行的调用: 对象实例上的运行时。 typeof()解析为在 运行时,但从 类型的标记。他们可能 决定打同一个电话,只是 该GetType需要一个实例。如果 我不需要这个例子,我会的 使用typeof 而且: 还要注意GetType是虚拟的, 并给出对象的类型, 不是所声明的 参考
TestClass
,则不会得到相同的结果。在性能之前先担心正确性。如果有任何类派生自TestClass
,则不会得到相同的结果。
谷歌快速搜索发现: GetType是在以下位置进行的调用: 对象实例上的运行时。 typeof()解析为在 运行时,但从 类型的标记。他们可能 决定打同一个电话,只是 该GetType需要一个实例。如果 我不需要这个例子,我会的 使用typeof 而且: 还要注意GetType是虚拟的, 并给出对象的类型, 不是所声明的 参考资料。即: 对象o=新字符串() typeof(o)对象类型 o、 GetType()字符串类型
谷歌快速搜索显示: GetType是在以下位置进行的调用: 对象实例上的运行时。 typeof()解析为在 运行时,但从 类型的标记。他们可能 决定打同一个电话,只是 该GetType需要一个实例。如果 我不需要这个例子,我会的 使用typeof 而且: 还要注意GetType是虚拟的, 并给出对象的类型, 不是所声明的 参考资料。即: 对象o=新字符串() typeof(o)对象类型 o、 GetType()字符串类型
我曾经在一次演讲(关于反思和优化)中测量过这种差异
一句话:如果你打算调用这行几十亿次,那么使用
typeOf()
而不是GetType()
可以节省一秒钟的时间。我曾经在一次演讲中测量过这一差异(关于反思和优化)
一句话:如果您计划调用该行几十亿次,那么使用
typeOf()
而不是GetType()
可以节省一秒钟,现在我正在搜索。。。你的两种说法并不总是相同的。因此,对于哪个“更好”或它是否“重要”的问题,答案是:这取决于@Esteban——你绝对正确。我想更好的问题是“你什么时候应该使用哪个?”。现在我正在搜索。。。你的两种说法并不总是相同的。因此,对于哪个“更好”或它是否“重要”的问题,答案是:这取决于@Esteban——你绝对正确。我想更好的问题是“什么时候应该使用哪个?”。如果它是一个密封的类呢?那么你会得到相同的Type
,而typeof
会更快。如果它是一个密封的类呢?那么你会得到相同的Type
,而typeof
会更快。您引用的第二篇文章说typeof()
的好处是您不需要构造所讨论类型的对象。但是,在示例avove中,对象已经被构造。您引用的第二篇文章说typeof()
的好处是您不需要构造所讨论类型的对象。但是,在示例avove中,对象已经构造好了。我在某处()读到关于反射的消息,对GetType的调用在JIT编译器中进行了专门优化,因为它是一种常用的方法,与查找类型的特定成员的MemberInfo等其他反射操作不同。GetType
得到了优化。这仍然不如typeof
@Ben快,我绝对同意。我并不想听起来像是建议一般使用GetType而不是typeof,所以谢谢你告诉我这一点。这篇文章实际上提到了操作类型也得到了优化。我想说的是,差异一点都不重要。有很多性能瓶颈影响更大,比在GetType/typeofI read somewhere()上节省几纳秒还大。关于对GetType的调用在JIT编译器中进行了专门优化的反射,因为它是一种常用的方法,与查找类型的特定成员的MemberInfo等其他反射操作不同。GetType
得到了优化。这仍然不如typeof
@Ben快,我绝对同意。我并不想听起来像是建议一般使用GetType而不是typeof,所以谢谢你告诉我这一点。这篇文章实际上提到了操作类型也得到了优化。我想说的是,差异一点都不重要。在第二个示例中,您的意思是不是o.GetType()
而不是typeof(o)
?在第二个示例中,您的意思不是o.GetType()
而不是typeof(o)
?
class TestClass
{
public void Test()
{
//which is faster?
object o1 = MethodRequiringType(typeof(TestClass));
object o2 = MethodRequiringType(this.GetType());
//which is better?
//does it matter?
}
public object MethodRequiringType(Type t)
{
return new { };
}
}