以下两个语句均测试某个对象x是否为T类型.一个对象在性能方面应该有所区别吗?
var result1 = x is T;
var result2 = typeof(T).IsInstanceOfType(x);
谢谢!
解决方法:
由于IsInstanceOfType
是采用对象的方法,因此将对值类型进行装箱.另一方面,运算符将不会执行拳击.
当您在编译时知道T是特定类型还是泛型类型参数时,使用第一种方法会更好.第二种方法适用于您的代码在运行时获取类型的情况,因为第一种方法不适用:
Type typeKnownAtRuntime = ...
var result2 = typeKnownAtRuntime.IsInstanceOfType(x); // This works
var incorrect = x is typeKnownAtRuntime; // This does not compile