财产访问性能

本文关键字:性能 访问 财产 | 更新日期: 2023-09-27 18:24:30

在我的公司内,我们得到了关于性能问题的简报。其中提到的一点是访问属性,因为大多数属性都是从数据库中检索的。因此,查询对象本身可能导致对底层数据库的昂贵调用。

现在我想知道以下两种说法之间是否有什么区别(至少考虑性能)

MyPropertyValue value = myObject.SomeProperty ?? ...;

MyPropertyValue value = (myObject.SomeProperty != null) ? 
    myObject.SomeProperty : 
    ...

我想前者是后者的一种快捷方式,因此也会导致对属性的两个查询,这是真的吗?

感谢您的

财产访问性能

第一个例子只访问属性的get一次,第二个例子访问它两次。

现在,如果get每次都进行DB调用,那么第一次肯定更好。

在LinqPad 中测试

第一个表达式将只计算SomeProperty一次,而后者将计算两次。

所以答案取决于房产的价格。一般来说,房产应该是便宜的。如果您有一个需要一段时间才能返回的属性,则应该考虑将其重构为方法。

如果你有一个更具体的问题,你可能会得到一个具体的答案