English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Свойствами (Property) являются именованными членами класса (class), структуры (structure) и интерфейса (interface). Члены переменные или методы в классе или структуре называются Поля (Field). Свойства (Property) являются расширением полей (Field) и могут быть accessed с использованием того же синтаксиса. Они используют Доступители (accessors) Сделать значение частного поля читаемым и записываемым или доступным для обработки.
Свойства (Property) не определяют место хранения. Напротив, они имеют возможность читать или записывать или вычислять их значения. Доступители (accessors).
Например, есть класс с именем Student, который имеет частные поля age, name и code. Мы не можем напрямую обращаться к этим полям за пределами класса, но мы можем иметь доступители к этим частным полям.
Свойства (Property)Доступитель (accessor)Содержит исполнимые команды для получения (чтения или вычисления) или установки (записи) свойств. Декларация доступителя (accessor) может включать один get доступитель, один set доступитель или оба сразу. Например:
// 声明类型为 string 的 Code 属性 public string Code { get { return code; } set { code = value; } } // 声明类型为 string 的 Name 属性 public string Name { get { return name; } set { name = value; } } // 声明类型为 int 的 Age 属性 public int Age { get { return age; } set { age = value; } }
Ниже приведен пример использования свойств (Properties):
using System; namespace w3codebox { class Student { private string code = "N.A"; private string name = "not known"; private int age = 0; // 声明类型为 string 的 Code 属性 public string Code { get { return code; } set { code = value; } } // 声明类型为 string 的 Name 属性 public string Name { get { return name; } set { name = value; } } // 声明类型为 int 的 Age 属性 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() { // 创建一个新的 Student 对象 Student s = new Student(); // 设置 student 的 code、name 和 age s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info: {0}", s); // Увеличить возраст s.Age += 1; Console.WriteLine("Student Info: {0}", s); Console.ReadKey(); } } }
Когда этот код будет скомпилирован и выполнен, он произведет следующие результаты:
Информация о студенте: Код = 001, Имя = Zara, Возраст = 9 Информация о студенте: Код = 001, Имя = Zara, Возраст = 10
Абстрактные классы могут иметь абстрактные свойства, которые должны быть реализованы в производных классах. Ниже приведен пример этого:
using System; namespace w3codebox { 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; // 声明类型为 string 的 Code 属性 public string Code { get { return code; } set { code = value; } } // 声明类型为 string 的 Name 属性 public override string Name { get { return name; } set { name = value; } } // 声明类型为 int 的 Age 属性 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() { // 创建一个新的 Student 对象 Student s = new Student(); // 设置 student 的 code、name 和 age s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Информация о студенте: - {0}", s); // Увеличить возраст s.Age += 1; Console.WriteLine("Информация о студенте: - {0}", s); Console.ReadKey(); } } }
Когда этот код будет скомпилирован и выполнен, он произведет следующие результаты:
Информация о студенте: Код = 001, Имя = Zara, Возраст = 9 Информация о студенте: Код = 001, Имя = Zara, Возраст = 10