代码之家  ›  专栏  ›  技术社区  ›  naim5am

这是什么意思?公共名称{get;set;}[重复]

  •  44
  • naim5am  · 技术社区  · 15 年前

    我经常在C#文档中看到这种安静。但是它有什么作用呢?

    public class Car
    {
       public Name { get; set; }
    }
    
    6 回复  |  直到 15 年前
        1
  •  51
  •   Bryan Watts    15 年前

    它是以下的简写:

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

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

        2
  •  36
  •   Mohammed Moinuddin    13 年前

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

    1.获取{返回名称} 获取访问器中的代码块在属性为 阅读 .

    2.设置{name=value} 设置访问器中的代码块在属性为 分配 一个新的值。

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

     class Person
     {
         private string name;  // the name field
         public string Name    // the Name property
         {
             get
             {
                 return name;
             }
             set
             {
                 name = value;
             }
         }
     }
    
    1. System.Console.Write(p.Name);  //The get accessor is invoked here
      

    调用get访问器以 阅读

    2.当你

    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
    

    集合存取器 “Name”属性的值“Stack”即“Stack”存储在字符串“Name”中。

    堆栈

        3
  •  10
  •   Mehrdad Afshari    15 年前

    这是一个自动读写属性。这是一款C#3.0的新产品。比如:

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

    除了不能直接访问备份字段之外。

        4
  •  4
  •   Jeff Donnici    15 年前

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

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

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

        5
  •  3
  •   Darthg8r    15 年前

    这相当于做:

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

    除非您在类中没有访问私有变量的权限。

        6
  •  1
  •   KV Prajapati    15 年前

    Auto-Implemented Properties

    摘要:在C#3.0及更高版本中,自动实现的属性使 属性声明在 系统中不需要额外的逻辑 属性访问器。