在';结果是T';vs';(T)的类型.IsInstanceOfType(结果)';
本文关键字:结果 类型 IsInstanceOfType vs 结果是 | 更新日期: 2023-09-27 17:59:54
以下两个语句都测试某个对象x
是否属于T
类型。在性能方面有什么区别吗?
var result1 = x is T;
var result2 = typeof(T).IsInstanceOfType(x);
谢谢!
由于IsInstanceOfType
是一个接受object
的方法,因此值类型将被装箱。另一方面,操作员is
将不执行装箱操作。
当您在编译时知道T
(作为特定类型或泛型类型参数)时,使用第一种方法会更好。第二种方法适用于代码在运行时获得类型的情况,因为第一种方法不适用:
Type typeKnownAtRuntime = ...
var result2 = typeKnownAtRuntime.IsInstanceOfType(x); // This works
var incorrect = x is typeKnownAtRuntime; // This does not compile