2017-05-24 74 views
-6

儘管我理解屬性的基本概念,例如爲私有數據成員提供讀取,讀寫訪問,但我仍然很難理解如何將該成員聲明爲public。在哪些場合下有用?如果這是一種改變私人領域價值的方法,封裝仍然如何執行?C#中的屬性優勢

用一個例子或鏈接請解釋一下,如果你能

+0

這聽起來像它屬於在考試中... – Mikanikal

+0

1.'GET'和'set'可以做更多的不僅僅是獲取或設置一個私有字段。 2.有時候,框架*需要使用屬性:例如,WPF綁定在字段上不起作用。 –

+2

'請用例子或鏈接解釋,如果你可以'你不知道如何谷歌?像[this](https://softwareengineering.stackexchange.com/questions/143736/why-do-we-need-private-variables) –

回答

-1

從個人的經驗:

你會一般,當你不希望它在外部通過調用包含私有數據成員的類其他類訪問私人數據成員。

公開數據成員是那些您可以通過其他類訪問以獲取其內容的成員。

我的意見是,它只是正確的編程語法。私有數據成員通常是常量的那些常量,一旦它被設置,您不希望覆蓋這些常量,而Public是類似代數的變量,必要時可能會被覆蓋。

類似的問題已被詢問: What is the difference between Public, Private, Protected, and Nothing?

乾杯,

亞託

+0

我不明白這是如何回答這個問題的。問題是關於爲什麼使用屬性而不是字段是有利的。這個答案和它鏈接到的是關於使用「公共」與「私人」訪問修飾符。他們是完全不同的概念。這個答案甚至沒有提到字段或屬性,只是一般的「數據成員」。 – BACON

0

我覺得這是對性能相場有點混亂,以及私人與私人(與內部)

字段是很像一個類的普通變量。他們可以是公共或私人的。 屬性,就像字段一樣,也可以是公共的或私有的。然而,雖然它們表現得與字段類似,但它們實際上更像是具有特定簽名的函數(簽名是setter只接受屬性類型的單個參數,getter不接受參數並返回該類型)。因爲它們的行爲類似於函數,所以無論何時設置或檢索屬性的值,都可以運行任意代碼來實現行爲(即緩存值,如果緩存爲空,則從某處檢索值)。