我只是有一个小设计问题。
如果我得到这个代码
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();
}
}
代码会有性能差异吗?我认为 Xyz() 直接调用会更快,但我不确定 ((Test)this).Xyz() 会与直接调用有所不同。
您对此有何看法,或引用文档。
谢谢
ps :我只是想有不同的性能,没有回答...为什么要转换或指定接口(interface)。我知道我可以直接调用我的方法
最佳答案
我希望编译器能够删除强制转换和“as”,因为它可以保证它们都成功……如果不成功,JIT 可能会这样做。请注意,如果您使用显式接口(interface)实现,您将需要 cast 或 as
运算符。在那种情况下,我会使用强制转换:我个人只使用 as
如果值 not 是正确的类型是可行的(在 bug 以外的情况下) ).
最终,任何性能差异都将变得微不足道,但为了可读性,我会尽可能不进行转换。
关于c# - 什么是最高效的,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368362/