【问题标题】:C# return int and increase value after returnC#返回int并在返回后增加值
【发布时间】:2013-03-14 12:27:48
【问题描述】:

我有一个接收int 的属性,每个get Number 都会返回int,然后我需要将int 加一。
如果我这样做:

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

这不好,因为如果我从 7000 开始,它将从 7001 开始。
退货后如何增加?

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

【问题讨论】:

  • 您是否尝试过自己的建议? stackoverflow 不是您个人的调试器军队。

标签: c# properties


【解决方案1】:

首先,你当前的代码会抛出StackOverflowException

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

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

试试这个:

    private int number;

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

【讨论】:

  • 无法编译,不能将自动属性与手动创建的属性混合使用。
【解决方案2】:

我会避免这样做。

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

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

来自MSDN

一般来说,方法代表动作,属性代表数据。 属性像字段一样使用,这意味着属性不应该 计算复杂或产生副作用

您可以看到的第一个副作用是调试器会静默增加您的编号,以防您的财产受到监视...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多