2009-04-13 47 views
4

我在讀一本書,叫C#黃皮書由羅布萬里,當我遇到這個聲明是:我應該在C#程序中使用屬性還是應該使用get/set訪問器?

程序員愛新閃亮的玩具。他們非常熱衷於使用語言功能炫耀。屬性可以有點像這樣。當考慮屬性與獲取和設置方法時,我更喜歡老式的get和set方法,因爲你知道這些方法在哪裏。另一方面,如果使用正確的方式,我可以看到屬性可能使生活更輕鬆。

我不太確定他的意思。你們有什麼建議? MS建議什麼?

+1

Duplicate http://stackoverflow.com/questions/601621/properties-vs-methods/601649 – cletus 2009-04-13 01:06:43

+0

有關.NET中的屬性需要注意的事情不會導致它們在Java中執行的性能開銷。 – Soviut 2009-04-13 02:51:33

+1

@Soviut:你的意思是那些不存在的Java屬性? – cletus 2009-04-13 04:20:37

回答

18

我想你應該考慮位的非編程建議

在羅馬,入鄉隨俗做。

.NET具有深入其所有庫,設計器和代碼生成器的屬性。這幾乎是平臺中不可分割的一部分。如果您選擇使用get/set訪問器而不是普通屬性,那麼您將創建一個與其他程序員期望的外觀非常不同的庫。

使用get/set訪問器只會增加您創建與各種工具不兼容的代碼的機會。例如,那裏有許多工具,其中有特殊的案例屬性和字段,併爲它們提供特殊功能。你將有一個等效的結構,但沒有工具支持。

0

我愛屬性。在「類庫的設計指南」中,他們推薦使用屬性(特別是對於獨立於其他州的狀態)。

0

想想這個的最好方法是通過與真實生活對象進行比較。讓我們說你是一個在現實生活中需要被設計的人。根據頭髮的顏色,高度和寬度等等,你會稱哪些屬性?一旦你開始思考這些問題,每個人都有自己的思考方式會更有幫助。

5

我不知道Rob Miles是誰,但是如果你的引用是準確的,那麼我已經失去了對他的尊重。

.NET中的所有東西都使用屬性。如果你的代碼不使用屬性,那麼它將是唯一沒有的代碼。

0

如果你不使用屬性,你會失去一個非常突出的特性,我認爲它在.NET中非常有用:綁定。你只能綁定到.NET中的屬性,所以如果你使用get/set訪問器,你不能和其他人一起玩。

2
myObject.Property++; 

對:

myObject.SetProperty(myObject.GetProperty() + 1); 

是啊..

顯式吸氣劑/應當非平凡的計算/處理完成,所以在那裏執行一個實際的動作中使用setter方法。

8

我寫這本書的一部分,是幾年前轉向C#的Java程序員。我想我會重新審視下一個版本的內容,並使其更清晰一些。

如果你想確保你的類的用戶知道,一些代碼會時,他們使用的東西跑,然後把它變成一個方法使得這個明確的。此外,使用方法允許您返回錯誤條件而不必拋出異常。沒有性能影響,因爲編譯器無論如何都將屬性轉換爲方法。

我使用屬性很多我寫的,雖然,特別是對於像狀態的代碼。我從來沒有真正提倡不使用性能,更確保你使用了正確的事情在正確的情況下。

相關問題