C#设置/获取速记问题

时间:2010-10-15 07:45:43

标签: c#

我对这个简短的手感到有些困惑。这是否允许我访问Var并设置myVar?

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

我不懂。

 private int myVar;

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

6 个答案:

答案 0 :(得分:2)

它不允许你,这就是重点。您可以通过公共财产访问私人变量。

答案 1 :(得分: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;

答案 3 :(得分:1)

不,它不会多余

public int MyProperty { get; set;}

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

答案 4 :(得分:0)

不允许您使用以下命令访问变量myVar:

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

你可以完全摆脱支持变量并执行此操作:

 public int MyProperty
 {
  get; set;
 }

仍然允许您像我的答案中的第一个代码部分一样访问您的媒体资源。

答案 5 :(得分:-1)

public int MyProperty { get; set; }

这不是多余的,因为如果MyProperty公开,它已经可以'get'和'set'了吗?