我的代码与此类似:
public decimal Count { get; set; }
public decimal PriceWithoutVat { get; set; }
public decimal AmountWithoutVat => Count * PriceWithoutVat;
但我希望AmountWithoutVat
可以设置,以便:
如果我没有设置AmountWithoutVat
,则AmountWithoutVat
为Count * PriceWithoutVat
如果我设置AmountWithoutVat
,则会存储并使用新值。
答案 0 :(得分:2)
嗯,你不能这样做(至少对于一个只有>语法的属性,因为它是只读的)
你可以添加一个可以为空的本地字段,如果它为null,则使用null-coalescing运算符返回其他内容:
private decimal? _ammountWithoutVat;
public decimal AmmountWithoutVat
{
get => _ammountWithoutVat ?? Count * PriceWithoutVat;
set => _ammountWithoutVat = value;
}
P.S。
正如蒂姆施密特特别指出的那样: "属性集语句是C#7功能"
在旧版本的C#中,您可以使用:
public decimal AmmountWithoutVat
{
get { return _ammountWithoutVat ?? Count * PriceWithoutVat; }
set { _ammountWithoutVat = value; }
}
答案 1 :(得分:0)
如果您不使用c#7
,则可以执行此操作" old"方式:
private decimal? amountWithoutVat;
public decimal AmountWithoutVat
{
get { return amountWithoutVat ?? Count * PriceWithoutVat; }
set { amountWithoutVat = value; }
}