什么是最高效的,为什么?

Céd*_*vin 1 .net c# .net-3.5

我只是有一个小设计问题.

如果我有这个代码

public Interface Test
{
  void Xyz();

}


public class1 : WebControl , Test
{
 public void XyZ()
 {
  // do someting
 }

 public OnLoad()
 {
   ((Test)this).Xyz();

// or   

   Test ctrl = this as Test;
   ctrl.Xyz();

// or

   Xyz();

 }

}
Run Code Online (Sandbox Code Playgroud)

代码是否会有性能差异?我认为Xyz()直接调用会更快,但我不确定((测试)这个).Xyz()将与直接调用有所不同.

您对此有何看法,或参考文档.

谢谢

ps:我只是想要表现出差异,没有答案......为什么你要演员或指定界面.我知道我可以直接打电话给我的方法

Jon*_*eet 7

我希望编译器会删除强制转换和"as",因为它可以保证它们都能成功......如果不成功,JIT可能会这样做.您需要转换或as运营商如果使用显式接口实现,你介意.在这种情况下,我会使用一个转换:我个人只使用as,如果它是可行的价值是正确的类型(不是一个bug等情况)的.

最终,任何性能差异都是微不足道的,但为了便于阅读,我会尽可能不使用演员表.