На этом шаге мы рассмотрим пример, где определен только get-аксессор.
В приведенном ниже примере представлена программа, в которой есть класс со свойством, для которого описан только get-аксессор, а set-аксессор не определен. Поэтому такое свойство доступно только для чтения, но не для присваивания значения.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr123_1 { // Класс со свойством: class MyClass { // Открытые целочисленные поля: public int first; public int last; // Конструктор с двумя аргументами: public MyClass(int a, int b) { first = a; // Значение первого поля last = b; // Значение зторого поля } // Целочисленное свойство (доступно только для чтения): public int sum { // Метод вызывается при считывании значения свойства: get { // Значение свойства: return first + last; } } } // Класс с главным методом: class Program { // Главный метод: static void Main() { // Создание объекта: MyClass = new MyClass(1, 9); // Проверка значения свойства: Console.WriteLine("Сумма полей: " + obj.sum); // Присваивание значения полю: obj.first = 6; // Проверка значения свойства: Console.WriteLine("Сумма полей: " + obj.sum); // Присваивание значения полю: obj.last = 2; // Проверка значения свойства: Console.WriteLine("Сумма полей: " + obj.sum); // Задержка: Console.ReadLine(); } } }
Результат выполнения такой.
Рис.1. Результат выполнения программы
В программе описан класс, у которого имеется два открытых (чтобы проще было менять значения) поля. Свойство sum, описанное в классе, имеет только get-аксессор. В качестве значения свойства возвращается сумма полей объекта. Если мы меняем значения полей, то меняется и значение свойства. С другой стороны, понятно, что мы не можем в принципе присвоить значение такому свойству. Здесь, фактически, свойство играет роль, характерную для метода, который вызывается из объекта класса и возвращает результат, вычисляемый на основе значений полей объекта. На практике такие ситуации встречаются достаточно часто.
На следующем шаге мы продолжим изучение этого вопроса.