一行代码用于设置不同的修饰符来获取/设置
本文关键字:设置 获取 一行 用于 代码 | 更新日期: 2023-09-27 18:17:14
我现在是这样做的:
protected bool __myMember = true;
bool myMember { public get { return __myMember; } protected set { __myMember = value; } }
理想情况下,我希望这样做(或类似的事情):
public-get protected-set bool myMember = true;
这可能吗?或者有没有其他方法可以缩短我目前的工作方式?我应该不这样做吗?
也许一个解决方案是,如果我们可以创建修饰语在夏普…但我怀疑我们做不到。
简写
public bool myMember { get; protected set; }
不需要添加支持字段。
实际上背场仍然存在。它只被编译器隐藏并直接处理,就像这一小段IL演示的那样
void Main()
{
myTest t = new myTest();
Console.WriteLine(t.member);
}
class myTest
{
public bool member {get; protected set;}
}
IL_0000: newobj UserQuery+myTest..ctor
IL_0005: stloc.0 // t
IL_0006: ldloc.0 // t
IL_0007: callvirt UserQuery+myTest.get_member
IL_000C: call System.Console.WriteLine
myTest.get_member:
IL_0000: ldarg.0
IL_0001: ldfld UserQuery+myTest.<member>k__BackingField
IL_0006: ret
myTest.set_member:
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: stfld UserQuery+myTest.<member>k__BackingField
IL_0007: ret
myTest..ctor:
IL_0000: ldarg.0
IL_0001: call System.Object..ctor
IL_0006: ret