Ключевое слово struct
Ключевое слово struct объявляет тип-значение.
Переменная хранит данные напрямую, а при присваивании
получается копия. Изменение копии не затрагивает исходное
значение - в отличие от class.
Структуры не поддерживают наследование от других типов,
кроме интерфейсов.
Синтаксис
struct Имя
{
// поля, свойства, методы
}
Пример
Давайте создадим структуру с полем и выведем его:
using System;
struct Point
{
public int X;
public int Y;
}
class Program
{
static void Main()
{
var point = new Point { X = 1, Y = 2 };
Console.WriteLine(point.X);
}
}
Результат выполнения кода:
1
Пример
Давайте убедимся, что присваивание копирует значение:
using System;
struct Counter
{
public int Value;
}
class Program
{
static void Main()
{
var first = new Counter { Value = 5 };
var second = first;
second.Value = 10;
Console.WriteLine(first.Value);
}
}
Результат выполнения кода:
5
Пример
Давайте изменим поле структуры через ref:
using System;
struct Counter
{
public int Value;
}
class Program
{
static void Double(ref int num)
{
num *= 2;
}
static void Main()
{
var counter = new Counter { Value = 3 };
Double(ref counter.Value);
Console.WriteLine(counter.Value);
}
}
Результат выполнения кода:
6
Смотрите также
-
ключевое слово
class,
которое объявляет ссылочный тип -
ключевое слово
record struct,
которое задаёт запись-значение -
модификатор
ref,
который передаёт поле структуры по ссылке -
тип
int,
который тоже является типом-значением