На этом шаге мы рассмотрим пример использования только set-аксессора.
Более экзотическим является случай, когда свойство доступно для присваивания значения, но не доступно для его считывания. Тем не менее такое тоже возможно. Соответствующее свойство описывается с set-аксессором, но без get-аксессора. Соответствующий пример представлен ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr124_1 { // Класс со свойством: class MyClass { // Закрытое текстовое поле: private string code; // Конструктор с одним аргументом: public MyClass(uint n) { // Присваивание значения свойству: number = n; } // Переопределение метода ToString(): public override string ToString() { return code; // Результат метода } // Свойство без get-аксессора: public uint number { // Метод вызывается при присваивании // значения свойству: set { // Локальная переменная: uint num = value; // Начальное значение текстового поля: code = ""; // Вычисление битов числа: do { // Значение последнего (младшего) бита // дописывается слева к тексту: code = (num % 2) + code; // Сдвиг кода числа на одну позицию вправо: num >>= 1; } while(num != 0); } } } // Класс с главным методом: class Program { // Главный метод: static void Main() { // Создание объекта: MyClass obj = new MyClass(5); // Бинарный код целого числа: Console.WriteLine("Бинарный код числа 5:\t" + obj); // Присваивание значения свойству: obj.number = 45; // Бинарный код целого числа: Console.WriteLine("Бинарный код числа 45:\t" + obj); // Задержка: Console.ReadLine(); } } }
Ниже приведен результат данной программы.
Рис.1. Результат выполнения программы
В данном случае мы имеем дело с классом MyClass, у которого есть свойство number типа uint (неотрицательное целое число) и закрытое текстовое поле code. Свойству можно присвоить значение, но нельзя прочитать значение свойства. При присваивании значения свойству number в текстовое поле code записывается (в виде текстовой строки) бинарный код этого числа. Метод ToString() переопределен в классе так, что результатом метода возвращается значение текстового поля code. Конструктору передается аргументом целое неотрицательное число, которое присваивается значением свойству number.
В set-аксессоре свойства number присваиваемое свойству значение записывается в локальную переменную num командой
uint num = value; .
code = ""; .
code = (num % 2) + code;
num >>= 1;
В главном методе мы создаем объект с передачей значения 5 аргументом конструктору и в итоге получаем бинарный код для этого числа. Затем свойству number присваивается новое значение 45, а в результате приведения объекта к текстовому формату в консоли появляется его бинарный код.
На следующем шаге мы продолжим изучение этого вопроса.