一行代码用于设置不同的修饰符来获取/设置

本文关键字:设置 获取 一行 用于 代码 | 更新日期: 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