最佳答案
我有一个程序,需要快速性能。在它的一个内部循环中,我需要测试对象的类型,以查看它是否从某个接口继承。
一种方法是使用 CLR 内置的类型检查功能。最优雅的方法可能是“ is”关键字:
if (obj is ISpecialType)
另一种方法是给基类我自己的虚拟 GetType ()函数,它返回一个预定义的枚举值(在我的例子中,实际上,我只需要一个 bool)。这种方法会很快,但不那么优雅。
我听说有一个专门针对“ is”关键字的 IL 指令,但这并不意味着它在被翻译成本地汇编时执行得很快。有人能分享一些关于“是”和其他方法的性能的见解吗?
UPDATE: Thanks for all the informed answers! It seem a couple helpful points are spread out among the answers: Andrew's point about 'is' automatically performing a cast is essential, but the performance data gathered by Binary Worrier and Ian is also extremely useful. It would be great if one of the answers were edited to include 所有 of this information.