رکوردها (Records) در C#
Record یکی از ویژگیهای مدرن C# است که برای ساخت دادههای Immutable و سبکتر استفاده میشود.
Record چیست؟
Record یک نوع Reference Type است که بیشتر برای نگهداری داده استفاده میشود و به صورت پیشفرض قابلیتهای مقایسه و کپی ساده را فراهم میکند.
تعریف ساده Record
public record User(string Name, int Age);
استفاده از Record
var user1 = new User("Ali", 25);
var user2 = new User("Ali", 25);
Console.WriteLine(user1 == user2); // True
تفاوت Record با Class
در کلاسها مقایسه بر اساس reference انجام میشود، اما در record مقایسه بر اساس مقدار (value-based) است.
public class UserClass
{
public string Name { get; set; }
}
public record UserRecord(string Name);
var c1 = new UserClass { Name = "Ali" };
var c2 = new UserClass { Name = "Ali" };
Console.WriteLine(c1 == c2); // False
var r1 = new UserRecord("Ali");
var r2 = new UserRecord("Ali");
Console.WriteLine(r1 == r2); // True
Immutability در Record
Recordها به صورت پیشفرض Immutable هستند (مقدارشان تغییر نمیکند).
public record User(string Name, int Age);
var user = new User("Ali", 25);
// ایجاد نسخه جدید با تغییر مقدار
var updatedUser = user with { Age = 26 };
Record با ویژگیهای پیشرفته
public record User
{
public string Name { get; init; }
public int Age { get; init; }
}
چه زمانی از Record استفاده کنیم؟
- برای DTO ها (Data Transfer Objects)
- برای مدلهای فقط خواندنی
- برای انتقال داده بین لایهها
مثال واقعی در پروژه
public record CreateUserRequest(string Name, int Age);
جمعبندی
Recordها یک ابزار مدرن در C# هستند که برای مدلسازی دادههای ساده، immutable و قابل مقایسه بسیار کاربردی هستند.