С# — Свойства
Свойства являются именованными членами классов, структур и интерфейсов. Переменные-члены или методы в классе или структурах называются полями. . Свойства являются расширением полей и доступны с использованием того же синтаксиса. Они используют аксессоры через который значения частных полей могут быть прочитаны, записаны или изменены.
В свойствах не указаны места хранения. Вместо этого у них есть аксессоры которые читают, записывают или вычисляют их значения.
Например, пусть у нас есть класс с именем Студент с закрытыми полями для возраста, имени и кода. Мы не можем получить прямой доступ к этим полям из-за пределов области действия класса, но у нас могут быть свойства для доступа к этим закрытым полям.
Аксессуары
аксессор свойства содержит исполняемые операторы, которые помогают в получении (чтении или вычислении) или установке (записи) свойства. Объявления методов доступа могут содержать метод доступа get, метод доступа set или и то, и другое. Например —
// Declare a Code property of type string: public string Code { get { return code; } set { code = value; } } // Declare a Name property of type string: public string Name { get { return name; } set { name = value; } } // Declare a Age property of type int: public int Age { get { return age; } set { age = value; } }
Пример
В следующем примере демонстрируется использование свойств —
Живая демонстрацияusing System; namespace tutorialspoint { class Student { private string code = "N.A"; private string name = "not known"; private int age = 0; // Declare a Code property of type string: public string Code { get { return code; } set { code = value; } } // Declare a Name property of type string: public string Name { get { return name; } set { name = value; } } // Declare a Age property of type int: public int Age { get { return age; } set { age = value; } } public override string ToString() { return "Code = " + Code +", Name = " + Name + ", Age = " + Age; } } class ExampleDemo { public static void Main() { // Create a new Student object: Student s = new Student(); // Setting code, name and the age of the student s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info: {0}", s); //let us increase age s.Age += 1; Console.WriteLine("Student Info: {0}", s); Console.ReadKey(); } } }
Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —
Student Info: Code = 001, Name = Zara, Age = 9 Student Info: Code = 001, Name = Zara, Age = 10
Абстрактные свойства
Абстрактный класс может иметь абстрактное свойство, которое должно быть реализовано в производном классе. Следующая программа иллюстрирует это —
Живая демонстрацияusing System; namespace tutorialspoint { public abstract class Person { public abstract string Name { get; set; } public abstract int Age { get; set; } } class Student : Person { private string code = "N.A"; private string name = "N.A"; private int age = 0; // Declare a Code property of type string: public string Code { get { return code; } set { code = value; } } // Declare a Name property of type string: public override string Name { get { return name; } set { name = value; } } // Declare a Age property of type int: public override int Age { get { return age; } set { age = value; } } public override string ToString() { return "Code = " + Code +", Name = " + Name + ", Age = " + Age; } } class ExampleDemo { public static void Main() { // Create a new Student object: Student s = new Student(); // Setting code, name and the age of the student s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info:- {0}", s); //let us increase age s.Age += 1; Console.WriteLine("Student Info:- {0}", s); Console.ReadKey(); } } }
Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —
Student Info: Code = 001, Name = Zara, Age = 9 Student Info: Code = 001, Name = Zara, Age = 10
Язык C