2011-11-29 68 views
3

我最初是作爲一名C#愛好者開始的,在我看來,房產應該永遠是公開的。私有財產是沒有意義的。會嗎?C#私有屬性 - 他們使用/有意義嗎?

這會:

private string propertyOne {get; set;} 

相當於此:

public string propertyOne {private get; private set;} 
+0

是的,這些是等同的。如果您正在爲別人編寫課程,可能會在您的文件中存在一些您不希望他們訪問的內容。例如,也許有人會想要獲得利率,但你不希望他們能夠改變利率的價值。在這種情況下,你可以做公開雙倍{get;私人設置;} – samack

+2

只需注意:.NET開發人員的.NET設計指南指定屬性應該是Pascal Cased。 http://msdn.microsoft.com/en-us/library/x2dbyw72%28v=vs.71%29.aspx – Alan

+2

最新的鏈接是http://msdn.microsoft.com/en-us/library/ ms229043.aspx。發佈的鏈接來自.NET 1.1。 –

回答

11

是的,私人財產可能是有意義的,特別是在你想要在getter/setter中實現邏輯的情況下。你可能只希望這些類可以在類中訪問(因此它們是私有的),但是你仍然想要將getter/setter邏輯封裝在一個地方。

您打印的兩行代碼之間存在差異。反映公共財產的人不會看到第一個,但他們會看到第二個,即使他們不能調用getter/setter。

4

使用物業的想法是封裝,而不是僅僅提出一個原始變量的「外面的世界」。這樣你可以在你的訪問器中有一個額外的邏輯。

所以不,純粹的私人財產不會是通常的用例。

雖然看到公共財產與私人二傳手是很常見的。

0

在你的問題中,是的,後者將在功能上等同於前者,但是將其作爲實現它是沒有意義的。

我傾向於使用

public string propertyOne {get; private set;} 

,因爲有時候我想它公開可用,但它能夠設定的值只存在於類。但大多數情況下,它也是當你想要將其他邏輯封裝到getters中時,setter可以執行其他功能。

但它們通常是公共屬性,以封裝其他功能。

+0

您的示例propertyOne是世界可設置的,但只有私人可讀。這是你的意圖嗎? –

+0

我注意到了,並且幾秒前編輯了=) – Chris

0

是的,這兩位代碼是等價的。我從來沒有創建一個私人財產與自動getter/setter。看起來不太有用。我已經使用私有屬性和getter的實際實現。私有get方法(或屬性getter)可能很有用。

相關問題