财产吸气者的逻辑

时间:2016-04-04 13:15:42

标签: c# properties

物业获取者的逻辑是多少? 例如,我有一个看起来像这样的代码。

    public double value
    {
        get
        {
            if (condition1
                || condition2
                || condition3
                || condition4)
            {
                _value = anotherValue;
            }
            return _value;
        }
    }

我已阅读各种帖子,说明属性内的代码不应该很昂贵。但是这个术语“昂贵”而且价格昂贵。对我来说有点模糊。

3 个答案:

答案 0 :(得分:2)

一般来说,在OOP中,getter(setter)也应该是一个简单的操作。您上面发布的内容非常简单,取决于实际情况

你提到过#34;昂贵的"对你来说是一个模糊的术语。 计算成本高昂的操作意味着需要很长时间才能完成(通常因为它必须完成大量的计算 - 这是一个过于简单化,但却是一个不错的近似)。例如,考虑:

if (a == 5
    || b == true
    || c == "FOO!"
    || d == 3.14159)
{
    _value = anotherValue;
}
return _value;

在这个例子中,条件是微不足道的,你的程序将近乎即时地通过这个块。另一方面:

if (some_slow_function())
{
    _value = anotherValue;
}
return _value;

假设some_slow_function确实运行缓慢,此块将花费很长时间返回_value,使其不再是微不足道的。如果经常调用此getter,也会经常调用some_slow_function,导致它阻塞程序并使其运行缓慢。

答案 1 :(得分:1)

只要没有等待或值的改变,就可以使用逻辑。你也应该注意不要有太多例外。一般的都可以,定制的太多了。

吸气剂意味着即时工作。有了这一点,就有了你的逻辑极限。保持安全,它立即工作,然后没关系。

答案 2 :(得分:1)

MSDN说:

  

属性是提供灵活读取机制的成员,   写或计算私有字段的值。可以使用属性   好像他们是公共数据成员,但他们实际上是特殊的   称为访问器的方法。这样可以轻松访问数据   同时仍然提供方法的安全性和灵活性。

因此,只要你的Property getter是幂等的并且执行速度快(,即不会产生任何性能瓶颈),那就没问题了。