На этом шаге мы рассмотрим использование этих методов со структурами.
Как отмечалось ранее, в структурах можно использовать операторные методы.
В примере ниже представлен очень скромный пример, в котором есть структура с операторными методами.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr199_1 { // Структура: struct MyNum { // Закрытое целочисленное поле: private int number; // Конструктор: public MyNum(int n) { // Значение поля: number = n; } // Метод для вычисления суммы экземпляра структуры // и числа: public static int operator+(MyNum A, int n) { return !A + n; } // Метод для вычисления суммы числа и // экземпляра структуры: public static int operator+(int n, MyNum A) { return A + n; } // Метод для вычисления суммы двух экземпляров // структуры: public static int operator+(MyNum A, MyNum B) { return !A + !B; } // Метод для унарного оператора: public static int operator!(MyNum A) { return A.number; } } // Класс с главным методом: class Program { // Главный метод: static void Main() { // Создание экземпляров структуры: MyNum A = new MyNum(100); MyNum B = new MyNum(200); // Использование операторных методов для вычисления // значения выражений: Console.WriteLine("A: {0}", !A); Console.WriteLine("B: {0}", !B); Console.WriteLine("A + B: {0}", A + B); Console.WriteLine("A + 10: {0}", A + 10); Console.WriteLine("20 + B: {0}", 20 + B); // Задержка: Console.ReadLine(); } } }
После выполнения программы получаем следующий результат:
Рис.1. Результат выполнения программы
Структура MyNum содержит закрытое целочисленное поле number, конструктор с одним аргументом (определяет значение поля) и несколько версий операторных методов. Точнее, в структуре описаны операторный метод для унарного оператора ! и три версии операторного метода для бинарного оператора сложения +. Действие унарного оператора ! на экземпляр структуры определено таким образом, что результатом возвращается значение целочисленного поля этого экземпляра. Операторный метод для оператора +, когда операндами являются два экземпляра структуры, результатом возвращает сумму целочисленных полей этих экземпляров. Причем в теле операторного метода для получения значения целочисленного поля экземпляра структуры мы использовали оператор !. Далее, сумма экземпляра структуры и числа в результате дает сумму целочисленного поля экземпляра и данного числа. Сумма числа и экземпляра структуры вычисляется как сумма экземпляра структуры и числа.
В главном методе программы мы создаем два экземпляра структуры MyNum и с их помощью проверяем работу операторных методов.
На следующем шаге мы рассмотрим структуры и события.