下面我在c#中有公共财产 得到了工作。但是设置不起作用。
private decimal _basketTotal;
public decimal BasketTotal
{
get
{
decimal total = PreDiscountTotal - DiscountTotal;
if (total < 0)
{
return 0;
}
else
{
return total;
}
}
set
{
this._basketTotal = value;
}
}
我试过这种方式设置BasketTotal的值
Basket baskObj = WebSession.Basket as Basket;
baskObj.BasketTotal = (decimal)localTotal;
当我调试上面的代码。 _basketTotal是有价值的。但是BasketTotal没有得到这个价值。
答案 0 :(得分:3)
您的get
未返回_basketTotal
,因此永远不会使用该值。
在get
中,您可以看到您从未提及_basketTotal
,而您每次都会重新计算它。
尝试这样的事情
private decimal? _basketTotal;
public decimal BasketTotal
{
get
{
if(_basketTotal == null)
{
//recalculate the total
decimal total = PreDiscountTotal - DiscountTotal;
if (total < 0)
{
_basketTotal = 0;
}
else
{
_basketTotal = total;
}
}
return (decimal)_basketTotal;
}
set
{
this._basketTotal = value;
}
}
答案 1 :(得分:0)
如果你想在你的属性中设置值,然后让你的属性返回你设置的相同值,你的getter需要返回你的值设置的变量。为了过度简化你的属性,它需要类似于下面的:
private decimal _basketTotal;
public decimal BasketTotal
{
get
{
return _basketTotal;
}
set
{
this._basketTotal = value;
}
}
如果你需要一个默认值,你可以在构造函数中定义它,或者为getter添加一些条件,如DLeh的答案所示。