【问题标题】:C# object is type vs object as type [duplicate]C#对象是类型vs对象作为类型[重复]
【发布时间】:2014-09-04 11:14:24
【问题描述】:
if(someVar is MyClass)

Resharper 建议将其替换为

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

有什么性能优势吗?我记得一些与装箱和拆箱变量有关的东西,但不确定我是否走在正确的道路上。还是 Resharper 只是建议正确的语法?

【问题讨论】:

    标签: c# types casting resharper


    【解决方案1】:

    它建议这样做的原因可能是因为前者需要两次强制转换:

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

    is 运算符在幕后进行转换并返回一个布尔值(无论是否允许)。

    如果你使用as,你几乎可以“缓存”结果,你只需要一次强制转换。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-30
      • 2020-12-21
      • 2016-05-28
      • 2011-09-13
      • 1970-01-01
      • 2011-11-15
      • 2020-12-12
      • 1970-01-01
      相关资源
      最近更新 更多