2016-06-22 61 views
1

在閱讀了關於何時使用屬性和方法的microsoft article之後,我有點困惑。c#在屬性和方法之間進行選擇

在底部的例子,他們說:

下面的代碼示例顯示了假設 一個屬性訪問在計算上是廉價的完整的應用程序。 EmployeeData類錯誤地定義了一個返回數組副本 的屬性。

具體

的EmployeeData工作類錯誤地定義返回一個陣列的 拷貝的屬性。

什麼是正確的做法呢?

fiddle of the example code

+1

在不閱讀文章的情況下冒險猜測:副本可能很昂貴,並且值得一種方法(意味着需要完成一些工作)而不是屬性(僅意味着數據訪問)。該屬性應該返回對數組的引用(如果這甚至是合適的),而不是它的副本。 – Conduit

+0

用「所以它應該使用一種方法」來展開該文本。 –

回答

1

這只是一個指導方針,但你的屬性應該儘可能地輕便。複製一個數組,就像在這個例子中一樣,對於一個屬性來說非常廣泛。它應該是一種方法。這樣,使用此代碼的任何人都知道可能需要一些時間。屬性通常反映私人領域的訪問者,所以人們期望它幾乎立即返回。希望這是有道理的。

+0

它只是點擊,正確的方法將刪除Employees get屬性,並始終調用CopyEmployeeRecords(),以便其他開發人員知道這是一個「昂貴」的函數來調用? –

+0

@SvenB正確!它不會改變任何東西,除非告訴某人這可能是計算密集型的(不僅僅是返回一個字段) –

1

該屬性是「不正確的」,因爲它裏面的代碼很慢。

public EmployeeRecord[] Employees 
{ 
    get 
    { 
     return CopyEmployeeRecords(); // slow code in property - bad 
    } 
} 

相反,寫一個方法:

public EmployeeRecord[] Employees() 
{ 
    return CopyEmployeeRecords();  // slow code in method - ok 
} 
0

的部分

使用方法,而不是一個屬性,在下面的情況。

在您正在閱讀的文章中告訴您使用一種方法而不是該屬性的屬性返回一個數組。

所以正確的方法是創建一個方法來複制數組。

相關問題