C#返回int并返回后增加值

时间:2013-03-14 12:27:49

标签: c# properties

我有一个获得int的属性,每个获取号码都会返回int,然后我需要将int增加一个。
如果我喜欢这样:

    public int Number
    {
        set;
        get
        {
            Number++;
            return Number;
        }
    }

它不好,因为如果我从7000开始,它将从7001开始 返回后如何增加?

我可以使用return Number++;吗?

2 个答案:

答案 0 :(得分:7)

首先,您当前的代码将抛出StackOverflowException

为什么呢?因为它会返回Number,但要返回Number,它会读取Number值。所以它会无限地调用get

其次,使用Postfix increment operator解决您的主要问题。

试试这个:

    private int number;

    public int Number
    {
        set { number = value; }
        get
        {
            return number++;
        }
    }

答案 1 :(得分:2)

我会避免这样做。

关于属性的第一个最佳实践是一致性,即,当调用getter时,您的proprety不应该修改类的成员。基本上,多次连续调用getter应返回相同的值(有例外,例如DateTime.Now,但这些是边缘情况)。

如果你想计算一个操作(在你的情况下增加),你可能应该使用一个函数。

来自MSDN

  

通常,方法表示操作,属性表示数据。   属性像字段一样使用,这意味着属性不应该   计算复杂的或产生副作用

您可以看到的第一个副作用是调试器,如果您对自己的财产有监视,它会默默地增加您的号码...