物业获取者的逻辑是多少? 例如,我有一个看起来像这样的代码。
public double value
{
get
{
if (condition1
|| condition2
|| condition3
|| condition4)
{
_value = anotherValue;
}
return _value;
}
}
我已阅读各种帖子,说明属性内的代码不应该很昂贵。但是这个术语“昂贵”而且价格昂贵。对我来说有点模糊。
答案 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是幂等的并且执行速度快(,即不会产生任何性能瓶颈),那就没问题了。