代码之家  ›  专栏  ›  技术社区  ›  Samvel Siradeghyan

这两个代码部分相同吗?

  •  2
  • Samvel Siradeghyan  · 技术社区  · 16 年前

    代码段:

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

    public double MemberVal   
     {    
      get; set;  
     }
    
    4 回复  |  直到 16 年前
        1
  •  5
  •   Binary Worrier    16 年前

    不,但现在它们是一样的

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

    public double MemberVal
    {
    get; set;
    }
    

    更新 除非——正如约翰内斯R_¶SSEL所指出的——在第一种情况下,您可以从代码访问字段,但在后一种情况下则不行:—)_

    也就是说,在第一个代码示例中,在类中,可以直接为属性(即 private double memberVal1 例如 memberVal = 1.1; ,其中在第二个实例中,该属性仍有一个私有的支持成员,但现在它不可见。
    您只能通过属性访问它。

        2
  •  13
  •   Matt    16 年前

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

        3
  •  3
  •   driis    16 年前

    是的,该代码是等效的,除了在第二个示例中memberval不是公共的(您是指这一点)。在后一种情况下,编译器会为您生成一个字段。它将有另一个自动生成的名称。

        4
  •  0
  •   user366312    16 年前
    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或更高版本。