Nas*_*loo 32 c# get properties accessor set
当我们定义一个属性时
public string Name {get; set;}
Run Code Online (Sandbox Code Playgroud)
dot net可以使我们的属性代码.但是当我们使用时
public string Name {get;}
public string Name {set;}
Run Code Online (Sandbox Code Playgroud)
我们面对
'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.
Run Code Online (Sandbox Code Playgroud)
实际上为什么编译器无法确定属性并自动生成代码?有什么问题?
Gis*_*shu 59
因为自动实现的属性为属性值生成自己的后备存储.您无权访问内部商店.
用.实现属性
对于正常的财产
private int _data;
public int Data{ get { return _data } };
Run Code Online (Sandbox Code Playgroud)
这里的父类可以在类中的其他地方执行以下操作(它不能使用自动道具)
_data = 100;
注意:你可以像这样定义一个auto-prop(这是我最常用的方式).
public int Data { get; private set;}
Run Code Online (Sandbox Code Playgroud)
这意味着该类的外部客户端无法设置该属性.但是,包含类本身可以this.Data = x;在类定义中多次设置属性.
如果没有setter,则该属性永远不会具有除默认值之外的任何内容,因此不会用于任何目的.