2010-06-15 104 views
2

我是.NET的新手。我有一個名爲Project的類,一個項目可以有多個預測。現在如果我想檢查項目是否有任何預測,我應該使用一個名爲HasForecast()的只讀布爾屬性,還是應該使用名爲HasForecast()的方法基本上返回一個布爾值。從框架設計指南我知道當操作很複雜時應該使用方法,因爲這裏我從數據庫檢索預測的值,如果我考慮方法,或者因爲它是邏輯數據成員我應該使用property.If我使用屬性我可以調用DBLayer的方法從getter.Please解釋方法vs屬性

問候,拉維

回答

8

屬性應該是非常輕的重量,行爲和感覺像田野。如果你需要訪問數據庫,那麼你應該使用一種方法。

請參閱MSDN這裏:http://msdn.microsoft.com/en-us/library/bzwdh01d(VS.71).aspx

屬性與方法

類庫設計者往往必須實現類成員作爲屬性或方法之間做出選擇。通常,方法表示動作和屬性表示數據。使用以下準則來幫助您選擇這些選項。

  • 該構件是邏輯數據使用成員的屬性。在以下成員聲明中,Name是一個屬性,因爲它是該類的邏輯成員。

使用時的方法:

  • 的操作是一個轉換,如Object.ToString。
  • 該操作非常昂貴,您希望與用戶溝通他們應該考慮緩存結果。
  • 使用get訪問器獲取屬性值會產生可觀察的副作用。
  • 連續兩次調用成員會產生不同的結果。
  • 執行順序很重要。請注意,應該可以按任意順序設置和檢索類型的屬性。
  • 該成員是靜態的,但返回一個可以更改的值。
  • 該成員返回一個數組。返回數組的屬性可能非常具有誤導性。通常有必要返回內部數組的副本,以便用戶不能更改內部狀態。這加上用戶可以輕易認定它是索引屬性的事實導致代碼效率低下。
+0

感謝您的答案傢伙....... – SRK 2010-06-15 02:49:03

2

如果該方法調用會啓動一個數據庫查詢我想使它一個方法,並可能改變名稱以使其成爲o很顯然,這不是簡單地返回一個字段的值。

0

我學到的一個好規則是,如果有機會不保證立即返回屬性*或者甚至有可能拋出異常的遠程機會,則使用方法。

*對於立即的變量定義,可以在屬性中使用邏輯,但保持儘可能短。

0

這不就是關於約定嗎?

我的意思是,不是屬性簡單地在一天結束時對正常吸氣劑和二次吸收劑合成糖嗎?