这2个代码部分是否相同?

时间:2010-04-19 07:39:47

标签: c# .net-3.5

代码段:

 private double memberVal;   
 public double MemberVal   
 {   
  get { return memberVal; }   
  set { memberVal= value; }   
 }

public double MemberVal   
 {    
  get; set;  
 }

4 个答案:

答案 0 :(得分:13)

几乎。在第二个示例中,MemberVal无法公开访问。

答案 1 :(得分:5)

不,但现在它们是相同的

private double memberVal;
public double MemberVal
{
    get { return memberVal; }
    set { memberVal= value; }
} 

public double MemberVal
{
get; set;
}

<强>更新 除了 - 正如JohannesRössel所指出的那样 - 你可以在第一种情况下从代码访问该字段但不能在后者中访问:-) -

这意味着在第一个代码示例中,您可以在类中直接设置属性的后备成员(例如private double memberVal1,例如memberVal = 1.1;),在第二个代码示例中,仍然存在私有支持该物业的成员,但它现在是看不见的 您只能通过酒店访问它。

答案 2 :(得分:3)

是的,该代码是等效的,除了在第二个例子中没有公开的MemberVal(你的意思是)。在后一种情况下,编译器会为您生成一个字段。它将有另一个自动生成的名称。

答案 3 :(得分:0)

private double memberVal;
public double MemberVal
{
    get { return memberVal; }
    set { memberVal= value; }
} 

public double MemberVal
{
    get; set;
}

第二个代码片段不适用于.net 2.0,因为它是在.net 3.0中引入的。

第二个是第一个的简写符号,但仅适用于.net 3.0或更高版本。