Массивы состоят из элементов одного типа. В тех случаях, когда единообразно нужно обрабатывать наборы данных, представляющих совокупность величин различного типа, рассматривая их как единое целое, целесообразно использовать структуры.
Структуры определяются с помощью ключевого слова struct . Далее указывается имя структуры и в фигурных скобках определяются члены структуры. Структуры могут содержать произвольное число различных видов членов: полей, методов и др.
Классы и структуры являются двумя основными конструкциями системы общих типов. Каждая из них по сути является структурой данных, инкапсулирующей набор данных (поля) и поведение (методы). Данные и поведение являются членами класса или структуры. Их объединение в одном типе называется инкапсуляцией. Согласно принципу инкапсуляции, класс или структура может задать уровень доступности каждого из членов по отношению к коду вне класса или структуры. Уровень доступа public (открытый доступ) использован в нижеследующих примерах. Другие уровни доступа здесь не рассматриваются.
В качестве членов структур (в дальнейшем классов) в настоящем пособии будут использоваться только поля и методы.
Поле – это переменная, объявленная в структуре. У поля есть имя и тип. Метод – это функция, определенная в структуре.
Рассмотрим определение структуры, в которой содержатся два поля разных типов:
struct Sportsmen
{
public string famile;
public int rez;
}
Здесь описана структура с именем Sportsmen с двумя полями: famile типа string и rez типа int . Описание структуры располагается вне метода Main. В связи с этим уровень доступа к полям установлен максимальный (public – открытый доступ), что дает возможность доступа к полям из метода Main.
Экземпляр структуры создается в методе Main как обычно указанием типа перед именем переменной:
Sportsmen temp;
Далее в поля этой переменной можно поместить значения (инициализировать поля структуры). Для доступа к полю нужно указать имя переменной и после точки имя поля. Например,
using System;
class Program
{
struct Sportsmen
{
public string famile;
public int rez;
}
static void Main()
{
Sportsmen temp;
temp.famile = "Иванов";
temp.rez = 77;
Console.WriteLine(
"Фам {0}\t Результат {1:f2}",
temp.famile, temp.rez);
Console.ReadKey();
}
}
Или
using System;
struct Sportsmen
{
public string famile;
public int rez;
}
class Program
{
static void Main()
{
Sportsmen temp;
temp.famile = "Иванов";
temp.rez = 7;
Console.WriteLine(
"Фам {0}\t Результат {1:f2}",
temp.famile, temp.rez);
Console.ReadKey();
}
}
Объявление массива структур. Например,
Sportsmen[] sp = new Sportsmen[5];
Здесь объявлен массив sp из пяти элементов, каждый из которых содержит два поля.
Использование структур делает представление данных более компактным и наглядным. Структуры можно пересылать одну в другую, если они идентичны. Возможен, например, оператор
sp[0] = temp;