Я часто вижу это в документации С#. Но что он делает?
public class Car
{
public Name { get; set; }
}
Я часто вижу это в документации С#. Но что он делает?
public class Car
{
public Name { get; set; }
}
Это сокращение для:
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
Компилятор генерирует переменную-член. Это называется автоматическим свойством .
В простых терминах они называются аксессуарами свойств. Их реализация может быть объяснена ниже:
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.0. Что-то вроде:
public class Car {
private string name;
public string Name { get { return name; } set { name = value; } }
}
за исключением того, что вы не можете напрямую обращаться к полю резервного копирования.
Он называется Автореализованным свойством и новый для С# 3.0. Это более чистый синтаксис, когда ваш доступ к свойству не требует какого-либо специального поведения или проверки. Он аналогичен функции:
public class Car
{
private string _name;
public string Name
{
get { return _name; }
set {_name = value; }
}
}
Таким образом, он сохраняет достаточный объем кода, но позже вы сможете изменить логику доступа, если поведение или правила должны измениться.
Это равнозначно:
private string _Text;
public string Text
{
get { return _Text; }
set { _Text = value; }
}
За исключением того, что у вас нет доступа к частной переменной внутри класса.
РЕЗЮМЕ: в С# 3.0 и более поздних версиях автоматически реализованные свойства объявление свойства более кратким, когда дополнительная логика не требуется в доступа к ресурсам.