IL指令“cpobj”是吗?适用于参考类型?
如果……,或者 classTok 不表示值类型,则 cpobj 的行为未指定。
但是 ECMA 335 说:
如果 typeTok 是引用类型,则 cpobj 指令与 ldind.ref 后跟 stind.ref 具有相同的效果。
哪个是正确的?
Microsoft Docs says:
The behavior of cpobj is unspecified if ……, or if classTok does not represent a value type.
But ECMA 335 says:
If typeTok is a reference type, the cpobj instruction has the same effect as ldind.ref followed by stind.ref.
Which is correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我们翻阅ECMA-335的前几版,我们会发现第三版改变了措辞,规定:
第 1 版和第 2 版中的措辞与 MSDN 上的措辞一致。
因此,我认为可以肯定地得出 ECMA-335 第 6 版是正确的结论,并且 MSDN 已经过时。
If we look through the previous editions of ECMA-335, we find that the 3rd edition changed the wording to specify:
In editions 1 and 2, the wording matched that on MSDN.
Therefore, I think it's safe to conclude that ECMA-335 6th edition is correct, and MSDN is out of date.