На этом шаге мы рассмотрим пример на такое использование структуры.
Экземпляр структуры может возвращаться результатом метода. Небольшая программа, в которой есть метод, возвращающий результатом экземпляр структуры, представлена в примере ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr198_1 { // Структура: struct MyStruct { // Ссылка на символьный массив: public char[] name; // Целочисленное поле: public int code; // Конструктор: public MyStruct(char[] s, int n) { // Значения полей: name = s; code = n; } // Метод для отображения значений полей: public void show() { Console.Write("Массив: "); for(int k = 0; k < name.Length; k++) { Console.Write("|" + name[k]); } Console.WriteLine("|\nЧисловое поле: {0}", code); } } // Класс с главным методом: class Program { // Метод возвращает результатом экземпляр структуры: static MyStruct create(string t, int n) { // Создание символьного массива на основе текста: char[] s = t.ToCharArray(); // Создание экземпляра структуры: MyStruct R = new MyStruct(s, n); // Результат метода: return R; } // Главный метод: static void Main() { // Экземпляр структуры: MyStruct A; // Присваивание значения экземпляру: A = create("Alpha", 100); // Проверка значений полей: A.show(); // Вызов метода из результата вызова метода: create("Bravo", 200).show(); // Задержка: Console.ReadLine(); } } }
Результат выполнения программы будет следующим:
Рис.1. Результат выполнения программы
Структура MyStruct имеет поле name, являющееся ссылкой на символьный массив, а также в структуре есть целочисленное поле code.
Конструктор в структуре описан так, что новый экземпляр может создаваться на основе ссылки на символьный массив и целочисленного значения. Они передаются аргументами конструктору и определяют значения полей экземпляра. Также в структуре описан метод show(), который при вызове отображает в консольном окне содержимое символьного массива и значение числового поля.
В классе с главным методом описан еще и статический метод create(), который возвращает результатом экземпляр структуры MyStruct, а аргументами методу передаются текстовое и целочисленное значения. В теле метода командой
char[] s = t.ToCharArray();
MyStruct R = new MyStruct(s, n); ,
return R;
В главном методе командой
MyStruct A;
A = create("Alpha", 100);
A.show(); .
Команду с вызовом метода create() можно интерпретировать как экземпляр делегата со всеми вытекающими отсюда последствиями. Например, мы можем вызвать метод show() из подобного выражения, как это сделано в команде
create("Bravo", 200).show(); .
На следующем шаге мы рассмотрим операторные методы в структурах.