在c#.net中更快(obj as Struct!= null)或(obj是Struct)

f1w*_*ade -2 .net c#

什么是更快

AnswerClass ansClass = obj as AnswerClass;
if(ansClass != null){
    //use ansClass directly
}
Run Code Online (Sandbox Code Playgroud)

要么

if(obj is AnswerClass ){
   AnswerClass ansClass = (AnswerClass) obj;
   //use ansClass now
}
Run Code Online (Sandbox Code Playgroud)

在C#.net中.

我环顾四周但找不到任何可以解答的问题,这里有人知道吗?

我已编辑以更好地解释我的问题,它是比较'as'然后null检查,然后使用,'is'然后直接演员?

dtb*_*dtb 6

as运营商不与值类型(工作structS),所以如果你有

struct SomeStruct { }

object obj = new SomeStruct();
Run Code Online (Sandbox Code Playgroud)

那么唯一的选择是找出类型和取消值的值

if (obj is SomeStruct)
{
    SomeStruct val = (SomeStruct)obj;
Run Code Online (Sandbox Code Playgroud)

  • 正确.他可以说'var answer = obj作为AnswerStruct ?; if(answer.HasValue){...}`但根据[性能惊喜与"as"和可空类型](http://stackoverflow.com/questions/1583050/),这个速度较慢. (2认同)