Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 92
- Предыдущая
- 92/642
- Следующая
// Поля структуры.
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
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();
Допускается также проектировать структуры со специальным конструктором, что позволяет указывать значения для полей данных при создании переменной, а не устанавливать их по отдельности. Конструкторы подробно рассматриваются в главе 5; однако в целях иллюстрации измените структуру
Point
struct Point
{
// Поля структуры.
public int X;
public int Y;
// Специальный конструктор.
public Point(int xPos, int yPos)
{
X = xPos;
Y = yPos;
}
...
}
Затем переменные типа
Point
// Вызвать специальный конструктор.
Point p2 = new Point(50, 60);
// Выводит X=50,Y=60.
p2.Display();
Использование структур, допускающих только чтение (нововведение в версии 7.2)
Структуры можно также помечать как допускающие только чтение, если необходимо, чтобы они были неизменяемыми. Неизменяемые объекты должны устанавливаться при конструировании и поскольку изменять их нельзя, они могут быть более производительными. В случае объявления структуры как допускающей только чтение все свойства тоже должны быть доступны только для чтения. Но может возникнуть вопрос, как тогда устанавливать свойство, если оно допускает только чтение? Ответ заключается в том, что значения свойств должны устанавливаться во время конструирования структуры. Модифицируйте класс, представляющий точку, как показано ниже:
- Предыдущая
- 92/642
- Следующая