这些代码中哪一段更快?
if (obj is ClassA) {}
if (obj.GetType() == typeof(ClassA)) {}编辑:我知道他们不会做同样的事情。
发布于 2008-10-08 20:21:04
This should answer that question, and then some.
对于那些不想读这篇文章的人来说,第二行if (obj.GetType() == typeof(ClassA)) {}更快。
(请注意,它们不会做同样的事情)
发布于 2008-10-08 20:23:38
如果他们不做同样的事情,那么哪个更快有关系吗?比较具有不同含义的语句的性能似乎不是一个好主意。
is会告诉您对象是否在其类型层次结构中的任何位置实现了ClassA。GetType()告诉您派生次数最多的类型。
不是一回事。
发布于 2008-10-08 20:22:52
他们不会做同样的事情。如果obj是ClassA类型或ClassA的某个子类,则第一个方法有效。第二个将只匹配ClassA类型的对象。第二个会更快,因为它不需要检查类的层次结构。
对于那些想知道原因,但又不想阅读is vs typeof中引用的文章的人。
https://stackoverflow.com/questions/184681
复制相似问题