我有一个财产收到int
,每个获得数字将返回int
,然后我需要增加一个int
。
如果我这样做:C#返回int并增加返回值
public int Number
{
set;
get
{
Number++;
return Number;
}
}
它不是好的,因为如果我有7000开始,它将与7001
我怎么能恢复后增加开始?
我可以使用return Number++;
吗?
我有一个财产收到int
,每个获得数字将返回int
,然后我需要增加一个int
。
如果我这样做:C#返回int并增加返回值
public int Number
{
set;
get
{
Number++;
return Number;
}
}
它不是好的,因为如果我有7000开始,它将与7001
我怎么能恢复后增加开始?
我可以使用return Number++;
吗?
我会避免这样做。
关于属性的第一个最佳实践是一致性,即当调用getter时,您的proprety不应修改您的类的成员。基本上,多次连续调用getter应该返回相同的值(也有例外,例如DateTime.Now
,但这些都是边缘情况)。
如果你想计算一个操作(在你的情况下增加),你可能应该使用一个函数。
MSDN来自:
一般而言,方法代表动作和属性表示数据。 属性用于字段,这意味着属性不应该是 计算复杂或产生副作用。
第一个副作用,你可以看到的是,会默默地递增的情况下你的电话号码调试器,你有一块手表你的财产......
首先,当前的代码会抛出StackOverflowException
为什么?因为它将返回Number
,但返回Number
它将读取Number
值。所以它会无限地拨打get
。
二,使用Postfix increment operator来解决你的主要问题。
试试这个:
private int number;
public int Number
{
set { number = value; }
get
{
return number++;
}
}
你甚至尝试自己的建议吗? stackoverflow不是你的个人调试器军队。 – 2013-03-14 12:29:59