2011-03-03 117 views
3

在VB.NET中,可以在類中執行以下操作。在C#中自動生成的屬性

Public Property MyProperty As String 

此時,爲你自動創建一個getter和setter,你可以引用屬性定義的變量。

Me._MyProperty = "BlahBlah" 

在C#中是否存在等價機制?

回答

8
public string MyProperty {get; set;} 

默認情況下它們都是公共存取器,你可以讓他們的一個私人這樣的:

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

Aggghhhh,謝謝....以及如何引用局部變量本身而不是通過getter和setter? this._MyProperty =「BlahBlah」;似乎沒有工作... – 2011-03-03 04:56:35

+0

我不認爲你可以指定易訪問性修飾符的屬性 – 2011-03-03 04:56:46

+0

的訪問者,你將不得不引用'this.MyProperty =「BlahBlah」'本身 – Kumar 2011-03-03 04:59:40

5

在C#中你不能直接引用自動實現屬性的基礎變量。

+0

真的嗎?這背後的設計原因是什麼? – 2011-03-03 05:13:01

+1

@Maxim:設計理由可能類似於「你沒有聲明它,所以你不能訪問它」。只需使用默認的屬性訪問器 - 直接訪問字段沒有性能優勢。 – dthorpe 2011-03-03 05:57:51

+0

我更想着如何處理延遲加載屬性,當你沒有訪問變量本身,但我猜它只是一樣的東西。 – 2011-03-04 02:26:43