На этом шаге мы рассмотрим переопределение этого метода в структурах.
Хотя структуры не поддерживают наследование, они встроены в иерархию наследования. Поэтому для структур так же, как и для классов, можно переопределить метод ToString(). В примере ниже по этому поводу представлен небольшой пример.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr195_1 { // Структура: struct MyStruct { // Открытое текстовое поле: public string name; // Открытое целочисленное поле: public int code; // Конструктор с двумя аргументами: public MyStruct(string name, int code) { // Присваивание значения полям: this.name = name; this.code = code; } // Переопределение метода ToString(): public override string ToString() { // Текстовая строка: string txt = "Экземпляр \"" + name + "\"\n"; txt += "Числовое поле: " + code + "\n"; // Результат метода: return txt; } } // Класс с главным методом: class Program { // Главный метод: static void Main() { // Создание экземпляров структуры: MyStruct A = new MyStruct("Alpha", 100); MyStruct B = new MyStruct("Bravo", 200); // Операции с экземплярами: Console.WriteLine(A); string text = B + "Выполнение программы завершено"; Console.WriteLine(text); // Задержка: Console.ReadLine(); } } }
Результат выполнения программы представлен ниже:
Рис.1. Результат выполнения программы
У структуры MyStruct два открытых поля: текстовое name и целочисленное code. В структуре описан конструктор с двумя аргументами. Эти аргументы определяют значения полей создаваемого экземпляра структуры.
Также в структуре описан (переопределен) метод ToString(). Результатом метод возвращает текстовую строку, которая содержит информацию о значениях полей экземпляра структуры.
В главном методе программы командами
MyStruct A = new MyStruct("Alpha", 100);
MyStruct B = new MyStruct("Bravo", 200);
Console.WriteLine(A);
Console.WriteLine(text); .
На следующем шаге мы рассмотрим свойства и индексаторы в структурах.