2014-09-04 60 views
0
if(someVar is MyClass) 

ReSharper的suggeted與C#對象的類型VS對象類型

var some = someVar as MyClass; 
if(some!= null){ /*.......*/ } 

更換這是沒有任何性能上的優勢?我記得與拳擊和拆箱變量有關的東西,但不知道,如果我在正確的道路上。還是Resharper只是建議適當的語法?

回答

1

它暗示這可能是因爲前者需要兩個注塑原因:

if(someVar is MyClass) 
{ 
    var myVar = (MyClass) someVar; 
} 

is運營商做一個幕後的演員和返回boolean它是否是允許的。

如果你使用as雖然,你幾乎「緩存」的結果,你將只有一個必要的演員。

var myVar = someVar as MyClass 
if(myVar != null) 
{ 
    // No cast needed 
}