为什么 C# 没有非虚拟调用约定?
Inspired by this SO question:
Why doesn't C# have a keyword for non-virtual calling convention?
EDIT: I mean "why is there no keyword for non-virtual IL calls, given that the C# compiler always uses IL virtual calls by default"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看看 为什么 c# 默认将方法实现为非虚拟?
引用安德斯·海尔斯伯格的话
来源:http://www.artima.com/intv/nonvirtual.html
Take a look at why c# implements methods as non-virtual by default?
To quote Anders Hejlsberg
Source: http://www.artima.com/intv/nonvirtual.html
这可能会解释它: 链接
很快:
call
指令可以接受null
作为this
指针(就像在 C++ 中一样)。这是错误的,C# 团队决定尽可能使用callvirt
,以便对null
指针的调用抛出NullReferenceException
This might explain it: Link
Shortly:
call
instruction can acceptnull
asthis
pointer (as it is in C++). This is errorsome and C# team decided to usecallvirt
wherever it is possible so that calls onnull
pointers throwNullReferenceException