Что это значит? public name {get; задавать;}

Я часто вижу это в документации С#. Но что он делает?

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

Ответ 1

Это сокращение для:

private string _name;

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

Компилятор генерирует переменную-член. Это называется автоматическим свойством .

Ответ 2

В простых терминах они называются аксессуарами свойств. Их реализация может быть объяснена ниже:

1.get {return name} Блок кода в get accessor выполняется, когда свойство Читать.

2.set {name = value} Кодовый блок в наборе аксессуаров выполняется, когда свойство Назначено новое значение.

Например. (Предполагая, что вы используете С#)

 class Person
 {
     private string name;  // the name field
     public string Name    // the Name property
     {
         get
         {
             return name;
         }
         set
         {
             name = value;
         }
     }
 }
  • Теперь, когда вы ссылаетесь на это свойство, как показано ниже

    Лицо p = new Person();//Создание экземпляра класса или создание объекта 'p' класса 'Person'

    System.Console.Write(p.Name);  //The get accessor is invoked here
    

Аксессуар get вызывается в Читать значение свойства i.e компилятор пытается прочитать значение string 'name'.

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

Аксессуар набора Назначает значение "Stack" для свойства "Name" i.e "Stack" хранится в строке "name".

Ouput:

Stack

Ответ 3

Это свойство автоматического чтения-записи. Это дополнение С# 3.0. Что-то вроде:

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

за исключением того, что вы не можете напрямую обращаться к полю резервного копирования.

Ответ 4

Он называется Автореализованным свойством и новый для С# 3.0. Это более чистый синтаксис, когда ваш доступ к свойству не требует какого-либо специального поведения или проверки. Он аналогичен функции:

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

Таким образом, он сохраняет достаточный объем кода, но позже вы сможете изменить логику доступа, если поведение или правила должны измениться.

Ответ 5

Это равнозначно:

private string _Text;

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

За исключением того, что у вас нет доступа к частной переменной внутри класса.

Ответ 6

Автореализованные свойства

РЕЗЮМЕ: в С# 3.0 и более поздних версиях автоматически реализованные свойства объявление свойства более кратким, когда дополнительная логика не требуется в доступа к ресурсам.