我应该更喜欢“是”还是“作为”运算符?

时间:2011-03-22 20:18:04

标签: c#

  

可能重复:
  casting vs using the 'as' keyword in the CLR

foreach (MyClass i in x)
{
        if (i is IMy)
        {
                IMy a = (IMy)i;
                a.M1();
        }
}

foreach (MyClass i in x)
{
        IMy a = i as IMy;
        if (a != null)
        {
                a.M1();
        }

}

5 个答案:

答案 0 :(得分:16)

当你施放1次时,第二个更可取

答案 1 :(得分:10)

我更喜欢第三种选择:

foreach(var i in x.OfType<IMy>()) {
    i.M1();
}

答案 2 :(得分:8)

第二个,因为只有一个演员。或者您可以使用OfType方法:

foreach (IMy i in x.OfType<IMy>()) {
  i.M1();
}

答案 3 :(得分:3)

第二个是可取的,因为你只投了一次。

This article也可以帮助理解这一点。 'as'操作执行'is'检查并返回一个已转换的对象或null - 为您完成所有工作。

答案 4 :(得分:3)

第二个。这是相同数量的代码行,但你避免做两次演员。

请注意,虽然第二个是优选的,但它不会起作用,类型是值类型。您只能在引用或可空类型上使用作为