Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 买这种类型的_C# - Fatal编程技术网

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 { }; 
    }
}