C# 以下哪种铸造方法最有效?

C# 以下哪种铸造方法最有效?,c#,.net,C#,.net,我一直在想这件事已经有一段时间了 if(something is MyType){ var item = something as MyType; } 或 第二版 var item = something as MyType; if (item != null) { ... } 更好的方法是:只进行一次类型转换(as),而不是两次(is,然后再进行as) 第1个版本(稍作修改)可用于不可为空的struct: 那么,如果我们可以一如既往地使用is操作符,那么is操作符的点是什么呢。这意

我一直在想这件事已经有一段时间了

if(something is MyType){
 var item = something as MyType;
}

第二版

var item = something as MyType;

if (item != null) {
  ...
}
更好的方法是:只进行一次类型转换(
as
),而不是两次(
is
,然后再进行
as

第1个版本(稍作修改)可用于不可为空的
struct


那么,如果我们可以一如既往地使用is操作符,那么is操作符的点是什么呢。这意味着它仅用于布尔检查。
is
用于测试实例是否为未进行类型转换的类型
if(值为ObsoleteClass){…建议用户更新例程…}
;另一种情况是,当您必须检查
struct
如果(x是int){int v=(int)x;…}
如果您确定自己的类型,例如在装箱一个结构的情况下,那么
(MyType)某物是最快的。-之所以使用
is
运算符,是因为它比实际的强制转换操作快-as
运算符是最慢的,显式强制转换是最快的,
is
是快速检查它是否是该类型的一个实例,而不实际转换该类型。这很有意义:)谢谢
var item = something as MyType;

if (item != null) {
  ...
}
// you can't put "as" for struct, i.e "something as int"
if (something is int) {
  int item = (int) something; // note changed type conversion
  ...
}