这是什么意思 ?公共名称{get;组;}

时间:2009-08-21 05:33:28

标签: c# properties

我经常在C#文档中看到这种情况。但是它做了什么?

public class Car
{
   public Name { get; set; }
}

6 个答案:

答案 0 :(得分:48)

这是简写:

private string _name;

public string Name
{
    get { return _name; }
    set { _name = value; }
}

编译器生成成员变量。这称为automatic property

答案 1 :(得分:31)

简单来说,它们被称为属性访问者。它们的实现可以解释如下

1.get {return name} 当属性为读取时,将执行get访问器中的代码块。

2.set {name = value} 当属性为已分配新值时,将执行set访问器中的代码块。

例如。(假设您使用的是C#)

 class Person
 {
     private string name;  // the name field
     public string Name    // the Name property
     {
         get
         {
             return name;
         }
         set
         {
             name = value;
         }
     }
 }
  1. 现在,当您引用此属性时,如下所示

      

    Person p = new Person(); //实例化类或创建对象   '人'等级的'p'

    System.Console.Write(p.Name);  //The get accessor is invoked here
    
  2. get访问器被调用读取属性的值,即编译器尝试读取字符串'name'的值。

    2.当您值(使用参数)分配给'Name'属性时,如下所示

    Person p = new Person();
    p.Name = "Stack"  // the set accessor is invoked here
    Console.Writeline(p.Name) //invokes the get accessor
    Console.ReadKey(); //Holds the output until a key is pressed
    

    set accessor 将值'Stack>分配到'Name属性,即'Stack'存储在字符串'name'中。

    输出继电器:

      

    堆栈

答案 2 :(得分:10)

这是一个自动读写属性。这是C#3.0的补充。类似的东西:

public class Car {
    private string name;
    public string Name { get { return name; } set { name = value; } }
}

除了您无法直接访问支持字段。

答案 3 :(得分:4)

它被称为自动实现的属性,是new to C# 3.0。当您对该属性的访问不需要任何特殊行为或验证时,它是一种更清晰的语法。它的功能类似于:

public class Car
{
  private string _name;
  public string Name
  {
    get { return _name; }
    set {_name = value; }
  }
}

因此它可以节省大量代码,但如果行为或规则需要更改,您可以选择稍后修改访问者逻辑。

答案 4 :(得分:3)

相当于:

private string _Text;

public string Text 
{
    get { return _Text; }
    set { _Text = value; }
}

除非您在课堂内无法访问私有变量。

答案 5 :(得分:1)

Auto-Implemented Properties

  

摘要:在C#3.0及更高版本中,自动实现的属性生成   财产声明时更简洁   不需要额外的逻辑   物业访问者。