使用c#自动实现的属性我可以使用一个类来执行以下操作(伪造的C#代码,因为我收到错误 - 在尝试编译时会出现以下错误):
public class Foo {
public String HouseName { get; private set; }
public int HouseId { get; private set; }
public int BedsTotal {
get { return (BedsTotal < 0) ? 0 : BedsTotal; }
private set;
}
}
错误5'House.BedsTotal.set'必须声明一个正文,因为它没有标记为abstract,extern或partial c:\ src \ House.cs
对我来说,似乎我应该能够为getter获取一个body并依赖于自动生成的私有集,就像我做了{get;私人集;但那不起作用。
我是否需要全程设置成员变量,关闭私有设置器,然后使用成员变量?
谢谢!
答案 0 :(得分:2)
是的,您需要设置私有变量,因为此时您最终会尝试读取get {}
部分,因为它会引用自身。
设置一个私有支持变量,如下所示:
private int _bedsTotal;
public int BedsTotal {
get { return (_bedsTotal < 0) ? 0 : _bedsTotal; }
private set { _bedsTotal = value; }
}
然后你可以通过私人安装者访问床位
答案 1 :(得分:2)
我会采取更简单的方法
private int _bedsTotal;
public int BedsTotal
{
get
{
return (this._bedsTotal < 0) ? 0 : this._bedsTotal;
}
private set
{
this._bedsTotal = value;
}
}
因此您可以设置BedsTotal
的值,如下所示:this.BedsTotal = [integer];
,无需使用其他私有方法,因为您可以使用set