当我看着OpCodes类源代码时,我发现了一些奇怪的东西。
OpCodes
类包含一些类型为OpCode struct
的静态只读字段。例如:
public static readonly OpCode Nop = new OpCode(OpCodeValues.Nop, 6556325);
创建一个新的OpCode
并传递两个参数。但是当我查看OpCode
结构时,我找不到任何带有两个参数的构造函数。相反,只有一个internal
构造函数,它看起来像这样:
internal OpCode(String stringname,
StackBehaviour pop,
StackBehaviour push,
OperandType operand,
OpCodeType type,
int size, byte s1, byte s2,
FlowControl ctrl,
bool endsjmpblk, int stack)
据我所知,这里没有可选参数。
那么构造函数在哪里?在某处有隐形构造函数吗?
注意:我正在使用.NET Reflector
答案 0 :(得分:4)
显然你正在看mscorlib的2.0版本。该版本具有带有11参数构造函数的OpCode
结构。较新版本的mscorlib(至少4.0版本)包含仅包含2个参数的OpCode
构造函数
答案 1 :(得分:3)
我认为你在寻找错误的地方。
在mscorlib.System.Reflection.Emit.OpCode
中找到(使用ILSpy)