gpt4 book ai didi

c# - 用于设置不同修饰符以获取/设置的一行

转载 作者:行者123 更新时间:2023-12-02 22:00:50 25 4
gpt4 key购买 nike

这是我现在的做法:

protected bool __myMember = true;
bool myMember { public get { return __myMember; } protected set { __myMember = value; } }

这是我最理想的做法(或类似的做法):

public-get protected-set bool myMember = true;

这可能吗?或者有没有其他方法可以缩短我目前的工作方式?我应该这样做吗?

如果我们可以在 csharp 中创建修饰符,也许一个解决方案...但我怀疑我们是否可以。

最佳答案

简单

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

关于c# - 用于设置不同修饰符以获取/设置的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com