gpt4 book ai didi

c# - 为什么自动实现的属性必须同时定义 get 和 set 访问器

转载 作者:IT王子 更新时间:2023-10-29 04:09:08 25 4
gpt4 key购买 nike

当我们定义一个属性时

    public string Name {get; set;}

dot net 可以制作我们的属性代码。但是当我们使用

    public string Name {get;}
public string Name {set;}

我们面对

'Hajloo.SomeThing.PropertyName.set' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.

其实为什么编译器不能自动判断属性并生成代码呢?有什么问题?

最佳答案

因为自动实现的属性会为属性值生成自己的后备存储。您无权访问内部商店。

实现一个属性
  • just get : 意味着您只能检索值。您永远无法设置属性值(即使在包含类中)
  • just set : 表示您只能设置值。您无法检索属性值。

对于普通属性

private int _data;
public int Data{ get { return _data } };

在这里,父类可以在类中的其他地方执行以下操作(它不能使用 auto Prop )

_data = 100;

注意:您可以像这样定义一个自动属性(这是我最常使用的方式)。

public int Data { get; private set;}

这意味着该属性不能由类的外部客户端设置。但是,包含类本身可以通过类定义中的 this.Data = x; 多次设置该属性。

关于c# - 为什么自动实现的属性必须同时定义 get 和 set 访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2597890/

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