我只是有一个小设计问题.
如果我有这个代码
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:我只是想要表现出差异,没有答案......为什么你要演员或指定界面.我知道我可以直接打电话给我的方法
我希望编译器会删除强制转换和"as",因为它可以保证它们都能成功......如果不成功,JIT可能会这样做.您将需要转换或as运营商如果使用显式接口实现,你介意.在这种情况下,我会使用一个转换:我个人只使用as,如果它是可行的价值不是正确的类型(不是一个bug等情况)的.
最终,任何性能差异都是微不足道的,但为了便于阅读,我会尽可能不使用演员表.