RU CSharp Structs Records - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Структуры, записи, кортежи и сравнение
struct — тип значения; class — ссылочный тип. record задаёт тип с удобной семантикой равенства по данным; возможны record class и record struct. with создаёт копию записи с изменёнными членами, сохраняя исходный объект.
Простой пример (Example.cs)
Сохраните этот пример отдельно как Example.cs. Запускайте его независимо от остальных примеров страницы.
Example.cs:
// PROJECT-EXAMPLE
var original = new Item("ore", 1);
var copy = original with { Count = 3 };
System.Console.WriteLine($"{original.Count}:{copy.Count}");
record Item(string Name, int Count);
Результат:
1:3
record Position(int X, int Y);
var first = new Position(10, 20);
var second = first with { X = 11 };
UO.Print($"First={first}, second={second}");
readonly record struct Point(int X, int Y);
var point = new Point(10, 20);
(int X, int Y) coordinates = (point.X, point.Y);
var (x, y) = coordinates;
UO.Print($"{x}, {y}");
Кортеж группирует несколько значений без отдельного объявления класса. Имена его элементов улучшают чтение, но не создают независимый новый тип. Для собственных типов различайте ссылочное равенство, Equals и перегруженный оператор ==.
Официальная документация: Структуры, записи, кортежи и сравнение — Microsoft Learn.