2010-10-15 59 views
0

我“马小糊涂这一手短。这是否让我acesss myVar的,并设置myVar的,像这样?C#设置/获取速记问题

object.myVar = 5; 
newNum = object.myVar; 

我不明白这一点。

private int myVar; 

public int MyProperty 
{ 
    get { return myVar; } 
    set { myVar = value; } 
} 
+2

什么简写? – annakata 2010-10-15 07:48:44

+1

这不是get/set的简写。速记将是自动属性。 'public int MyProperty {get;组; }'。 – RPM1984 2010-10-15 07:50:53

+1

除了别人的回答,你的代码不能被编译,因为'object'不是一个有效的变量名:D – 2010-10-15 07:55:50

回答

2

没有,这是什么意思是,你有一个“隐藏”的私人整数称为myVar该类之外没有人能看到,但是从外面只能看到一个名为MyProperty属性,出现这种情况的人重定向到myVar,但他们不会知道它!

从里面,你可以这样做:

this.myVar = 12; 
int test = this.myVar; /*(this. would actually be optionnal)*/ 

从外面看,如果myInstance是你的类的实例,人们可以这样做:

int test = myInstance.MyProperty; 
myInstance.MyProperty = 12; 

性质的观点是隐藏私人成员,并控制他们的访问方式。

2

它不允许你,那是你点通过公共属性来访问私有变量

1

在3.0及以上版本,你也可以这样做:。

public int MyProperty { get; set; } 

而像这样访问他们:

object.MyProperty = 5; 
newNum = object.MyProperty; 
+1

应该是'object.MyProperty'不是MyVar。 – Mauro 2010-10-15 07:53:20

+0

@Mauro:很好,谢谢! – 2010-10-15 07:54:11

0

不,它允许您使用这个来访问你的变量myVar的:

object.MyProperty = 5; 
newNum = object.MyProperty; 

你可以摆脱后盾变量的完全和做虽然:

public int MyProperty 
{ 
    get; set; 
} 

这仍然会允许您访问您的财产,如f我在我的答案中编码部分。

-1
public int MyProperty { get; set; } 

不会这是多余的,因为如果是myProperty的市民已经可以“得到”和“设置”?

1

没有也不会是多余的

public int MyProperty { get; set;} 

这将创建一个公共和私有变量。 外部类可以命令它,但有一个隐藏的私有变量,将使用get set方法。这仍然是安全的,因为类本身会改变数值,而不是从外部改变其他方法。