2014-09-26 31 views
1

在我的公司內部,我們獲得了有關性能問題的簡報。其中提到的一點是屬性的訪問,因爲其中大多數是從數據庫中檢索的。因此查詢對象本身可能會導致對底層數據庫的昂貴調用。物業訪問表現

現在,我不知道是否有下面的兩個語句(考慮服務表現至少)

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

而且

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

我想前者之間的區別是後者的一種快捷方式並因此也導致對該財產的兩個查詢,這是真的嗎?

感謝亞

+0

這將取決於如果屬性支持延遲加載,否? – 2014-09-26 08:16:34

+2

第一個表達式將評估'SomeProperty'只有一次,而後者將評估兩次。所以答案取決於房產的價格。 – 2014-09-26 08:17:28

+0

啊,我明白了...所以我的假設是不正確的。對我更好,謝謝 – HimBromBeere 2014-09-26 08:19:21

回答

1

第一個例子只能訪問屬性的get一次,和所述第二訪問它的兩倍。

現在,如果get每次都進行數據庫調用,那麼第一個肯定會更好。

測試在LinqPad

1

首先表達式會SomeProperty僅一次,而後者將評估兩次。

所以回答取決於房產的價格。一般而言,物業應該便宜。如果您有一個需要一段時間才能返回的屬性,則應考慮將其重構爲一種方法。

如果您有更具體的問題,您可能會得到一個具體的答案。

+0

嗯,問題不在於財產本身的表現,而僅僅是這兩個機會中的哪一個更少。我得到了我的答案,謝謝 – HimBromBeere 2014-09-26 08:21:19