English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Основной курс

C# Продвинутый курс

C# ООП

Свойства (Property) в C#

Свойствами (Property) являются именованными членами класса (class), структуры (structure) и интерфейса (interface). Члены переменные или методы в классе или структуре называются Поля (Field). Свойства (Property) являются расширением полей (Field) и могут быть accessed с использованием того же синтаксиса. Они используют Доступители (accessors) Сделать значение частного поля читаемым и записываемым или доступным для обработки.

Свойства (Property) не определяют место хранения. Напротив, они имеют возможность читать или записывать или вычислять их значения. Доступители (accessors).

Например, есть класс с именем Student, который имеет частные поля age, name и code. Мы не можем напрямую обращаться к этим полям за пределами класса, но мы можем иметь доступители к этим частным полям.

Доступители (Accessors)

Свойства (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

Абстрактные свойства (Abstract Properties)

Абстрактные классы могут иметь абстрактные свойства, которые должны быть реализованы в производных классах. Ниже приведен пример этого:

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