if(someVar is MyClass)
Resharper建议将其替换为
var some = someVar as MyClass;
if(some!= null){ /*.......*/ }
有任何性能优势吗?我记得与拳击和拆箱变量有关的东西,但不确定,如果我在正确的道路上。或者Resharper只是建议正确的语法?
答案 0 :(得分:1)
它表明这可能是因为前者需要两个演员:
if(someVar is MyClass)
{
var myVar = (MyClass) someVar;
}
is
运算符在幕后执行转换并返回布尔值,无论是否允许。
如果你使用as
,你几乎可以“缓存”结果,你只需要一次演员。
var myVar = someVar as MyClass
if(myVar != null)
{
// No cast needed
}