gpt4 book ai didi

c# - 为什么不允许只有一个带有主体的访问器而不是两个?

转载 作者:行者123 更新时间:2023-11-30 18:56:19 28 4
gpt4 key购买 nike

假设我有这个属性:

    public int Money
{
get;
set{
Money = value;
}
}

这不会编译,说 get 访问器必须有一个主体,因为它没有标记为 abstract、extern 或 partial。如果我向它添加一个正文并像这样返回 Money 属性:

    public int Money
{
get{
return Money;
}
set{
Money = value;
}
}

.. 我手上有一个无限循环,我的程序会抛出堆栈溢出异常。

所以我的问题最终归结为:有没有一种方法可以保留 get/set 访问器,在不创建无限循环的情况下返回 get 中的当前值,并且仍然有 set 访问器的主体?

最佳答案

要么使用:

public int Money { get; set; }

或者如果您真的需要访问器主体,则需要使用支持字段:

private int _money;
public int Money
{
get { return _money; }
set { _money = value; }
}

但是,仅当您需要在使用 getter 或 setter 时执行一些额外的逻辑(例如引发事件)时才使用后者。

此外,后者或多或少是编译器自动为您生成的,它可以确保一致地使用支持字段。

如果您只提供一个主体,则很难定义它的行为方式:毕竟您无权访问代码中生成的支持字段,因此整个想法没有意义。

关于c# - 为什么不允许只有一个带有主体的访问器而不是两个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506385/

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