gpt4 book ai didi

c# - 自动属性必须同时定义 get 和 set 访问器是否存在技术原因

转载 作者:太空狗 更新时间:2023-10-30 00:09:01 26 4
gpt4 key购买 nike

我知道自动属性必须定义一个 get 和 set 访问器方法,我也知道可以通过访问修饰符使这些访问器中的任何一个不可见。

是否有编译器满意的技术原因

public object Property { get; set; }

但不是

public object Property { get; }

我(可能是错误的)对这段代码的理解是,编译器生成了一个对调用代码隐藏的支持字段,如下所示:

private object hiddenField; //hidden by compiler.

public object Property

{

get { return hiddenField; }

set { hiddenField = value;}

}

如果编译器可以生成它,是否有理由不能根据属性声明中是否存在 setter 来省略 set 访问器函数。

我理解这可能是功能范围的问题而不是技术限制,我也坦率地承认我还没有查阅 C# 语言规范。

[更新 2]

原谅我...我是个白痴:P,我明白了,谢谢大家对我的高年级时刻的包容/

最佳答案

没有 set 访问器,就无法设置值,因为您无法访问“hiddenField”。

同样,如果没有 get 访问器,将无法取回您设置的值。

既然真的没用了,那是不允许的。

但是,您可以对这两种方法使用不同的可访问性:

public object Property { get; private set; }

这使您能够从外部隐藏集合,但仍然具有可用的属性。

关于c# - 自动属性必须同时定义 get 和 set 访问器是否存在技术原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992707/

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