Шаг 123.
Язык программирования C#. Начала
Свойства и индексаторы. Использование свойств (продолжение)

    На этом шаге мы рассмотрим пример, где определен только 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-аксессор. В качестве значения свойства возвращается сумма полей объекта. Если мы меняем значения полей, то меняется и значение свойства. С другой стороны, понятно, что мы не можем в принципе присвоить значение такому свойству. Здесь, фактически, свойство играет роль, характерную для метода, который вызывается из объекта класса и возвращает результат, вычисляемый на основе значений полей объекта. На практике такие ситуации встречаются достаточно часто.

    На следующем шаге мы продолжим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг