Back to questions
Junior — Middle
61
Чем отличается тип данных Record от Struct в контексте программирования?
Answer from AI
sobes.tech AI
В C# record и struct — это разные типы данных с разными назначениями и поведением.
-
Record — это ссылочный тип (reference type), предназначенный для создания неизменяемых (immutable) объектов с поддержкой семантики значения. Records автоматически реализуют методы
Equals(),GetHashCode()иToString(), основываясь на значениях свойств, что удобно для сравнения и копирования объектов. -
Struct — это значимый тип (value type), который хранится в стеке и копируется по значению. Struct обычно используется для небольших, легковесных объектов, где важна производительность и минимизация аллокаций в куче.
Основные отличия:
| Характеристика | Record (class) | Struct |
|---|---|---|
| Тип | Ссылочный (reference type) | Значимый (value type) |
| Мутабельность | Обычно immutable | Может быть mutable |
| Хранение | В куче | В стеке или inline |
| Сравнение | По значению (значения свойств) | По значению (все поля) |
| Использование | Для сложных объектов с логикой | Для легковесных данных |
Пример записи record:
public record Person(string FirstName, string LastName);
var p1 = new Person("Иван", "Иванов");
var p2 = new Person("Иван", "Иванов");
Console.WriteLine(p1 == p2); // True, сравнение по значениям
Пример struct:
public struct Point
{
public int X { get; set; }
public int Y { get; set; }
}
var point1 = new Point { X = 1, Y = 2 };
var point2 = point1; // копирование по значению
point2.X = 3;
Console.WriteLine(point1.X); // 1