Теперь, когда вы понимаете роль типов перечислений, давайте посмотрим, как использовать
На заметку! Если вы имеете опыт объектно-ориентированного программирования, тогда можете считать структуры "легковесными типами классов", т.к. они предоставляют способ определения типа, который поддерживает инкапсуляцию, но не может использоваться для построения семейства взаимосвязанных типов. Когда возникает потребность в создании семейства типов, связанных отношением наследования, необходимо применять классы.
На первый взгляд процесс определения и использования структур выглядит простым, но, как часто бывает, самое сложное скрыто в деталях. Чтобы приступить к изучению основ типов структур, создайте новый проект по имени FunWithStructures
. В языке C# структуры определяются с применением ключевого слова struct
. Определите новую структуру по имени Point
, представляющую точку, которая содержит две переменные типа int
и набор методов для взаимодействия с ними:
struct Point
{
// Поля структуры.
public int X;
public int Y;
// Добавить 1 к позиции (X, Y).
public void Increment
{
X++; Y++;
}
// Вычесть 1 из позиции (X, Y).
public void Decrement
{
X--; Y--;
}
// Отобразить текущую позицию.
public void Display
{
Console.WriteLine("X = {0}, Y = {1}", X, Y);
}
}
Здесь определены два целочисленных поля (X
и Y
) с использованием ключевого слова public
, которое является модификатором управления доступом (их обсуждение будет продолжено в главе 5). Объявление данных с ключевым словом public
обеспечивает вызывающему коду возможность прямого доступа к таким данным через переменную типа Point
(посредством операции точки).
На заметку! Определение открытых данных внутри класса или структуры обычно считается плохим стилем программирования. Взамен рекомендуется определять закрытые данные, доступ и изменение которых производится с применением открытых свойств. Более подробные сведения приведены в главе 5.
Вот код, который позволяет протестировать тип Point
:
Console.WriteLine("***** A First Look at Structures *****\n");
// Создать начальную переменную типа Point.
Point myPoint;
myPoint.X = 349;
myPoint.Y = 76;
myPoint.Display;
// Скорректировать значения X и Y.
myPoint.Increment;
myPoint.Display;
Console.ReadLine;
Вывод выглядит вполне ожидаемо:
***** A First Look at Structures *****
X = 349, Y = 76
X = 350, Y = 77
Создание переменных типа структур
Для создания переменной типа структуры на выбор доступно несколько вариантов. В следующем коде просто создается переменная типа Point
и затем каждому ее открытому полю данных присваиваются значения до того, как обращаться к членам переменной. Если не присвоить значения открытым полям данных (X
и Y
в данном случае) перед использованием структуры, то компилятор сообщит об ошибке:
// Ошибка! Полю Y не присвоено значение.
Point p1;
p1.X = 10;
p1.Display;
// Все в порядке! Перед использованием значения присвоены обоим полям.
Point p2;
p2.X = 10;
p2.Y = 10;
p2.Display;
В качестве альтернативы переменные типа структур можно создавать с применением ключевого слова new
языка С#, что приводит к вызову
// Установить для всех полей стандартные значения,
// используя стандартный конструктор.
Point p1 = new Point;
// Выводит Х=0, Y=0
p1.Display;
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT