考虑这一类:
public class Foo
{
// Fields
private string _bar;
// Properties
private string Bar
{
get
{
return this._bar;
}
set
{
this._bar = value;
}
}
}
现在,我去看编者为<代码>的一套编汇的IL代码。 Bar Property:
.method private hidebysig specialname instance void set_Bar(string value ) cil managed
{
.maxstack 8
L_0000: nop
L_0001: ldarg.0
L_0002: ldarg.1
L_0003: stfld string ConsoleApplication2.Program/Foo::_bar
L_0008: ret
}
为什么要填写ldarg.0
? WHAT位于第一(指数0)论点中? 由于方法/财产只需要1个论据......
更糟的是:
.method private hidebysig specialname instance string get_Bar() cil managed
{
.maxstack 1
.locals init (
[0] string CS$1$0000)
L_0000: nop
L_0001: ldarg.0
L_0002: ldfld string ConsoleApplication2.Program/Foo::_bar
L_0007: stloc.0
L_0008: br.s L_000a
L_000a: ldloc.0
L_000b: ret
}
为什么<代码>。 为什么要? 为什么在背书领域和刚刚返回的<代码>ldfld?