IL Callvirt等价性是什么?

3

il.EmitCall(OpCodes.Callvirt, getter, null);

与以下代码等效:

il.Emit(OpCodes.Callvirt,getter);

我不确定如何检查动态生成的IL,这是第二个相关的问题。

1个回答

5

是的。

Emit(OpCode, MethodInfo) 的源代码(经过验证后)开始于以下部分:

if (opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj)) 
{
    EmitCall(opcode, meth, null); 
} 

出于好奇,如果在StackOverflow上发布Microsoft .NET源代码,许可证有什么影响? - sehe
我不是律师,但在StackOverflow上发布问题对我来说算是“开发人员更深入了解源代码内部工作的需求”,但是许可证本身使用特定于为公司工作的个人的术语,因此我不确定SO在某些措辞方面是否适用。 - Robert Rouhani
你使用了反编译器还是查找了框架源代码?如果是前者,使用的是哪一个?如果是后者,哪里有最好的源代码?非常感谢你确认我的怀疑。 - sgtz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接