2011-03-03 120 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