نکته سی شارپ: رکوردهای با ارث بردن

Summarize this content to 400 words in Persian Lang
بیایید در مورد Records with Inheritance که در C# 9 معرفی شده است صحبت کنیم که به رکوردها اجازه می دهد از وراثت درست مانند کلاس ها استفاده کنند و روشی انعطاف پذیرتر و کارآمدتر برای کار با داده های تغییرناپذیر ارائه می دهند. مثال را در کد زیر ببینید.
public record Document(int Id, DateTime Date);
public record Invoice(int Id, DateTime Date, decimal Amount) : Document(Id, Date);
public record Receipt(int Id, DateTime Date, string Payer) : Document(Id, Date);
public class Program
{
public static void Main()
{
Invoice invoice = new(1, DateTime.Now, 150.00m);
Receipt receipt = new(2, DateTime.Now, “John”);
Console.WriteLine(invoice); // Output: Invoice { Id = 1, Date = …, Amount = 150.00 }
Console.WriteLine(receipt); // Output: Receipt { Id = 2, Date = …, Payer = John }
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح:
رکوردها برای کار با داده های تغییرناپذیر و برای سناریوهایی که نیاز به مقایسه اشیاء بر اساس مقدار دارند، نه بر اساس مرجع، ایده آل هستند. با Records with Inheritance، می توانید سلسله مراتبی از انواع را بر اساس رکوردها ایجاد کنید، که در سناریوهایی که انواع داده های مختلف ویژگی های مشترک دارند، مفید است. تصور کنید برنامهای دارید که انواع مختلفی از اسناد (فاکتورها، رسیدها و غیره) را مدیریت میکند، که در آن همه ویژگیهایی مانند ID و Date را به اشتراک میگذارند. با استفاده از وراثت با رکوردها، می توانید یک رکورد پایه تعریف کنید و رکوردهای خاص دیگری را استخراج کنید.
این رویکرد کد شما را پاکتر و سازماندهیتر میکند و در عین حال مزایای تغییرناپذیری و مقایسه ارزش را حفظ میکند.
توضیح کد:
در این مثال سه رکورد داریم:
Document: این رکورد پایه است که حاوی ویژگیهای رایج مانند ID و Date برای همه انواع سند است.
فاکتور: این رکورد از Document به ارث می رسد و یک ویژگی خاص به نام Amount را اضافه می کند که نشان دهنده ارزش فاکتور است.
رسید: این نیز از Document ارث می برد و دارایی Payer را اضافه می کند که نماینده شخصی است که پرداخت را انجام داده است.
در متد Main، یک نمونه از Invoice و دیگری از Receipt ایجاد می کنیم و مقادیر آنها را در کنسول نمایش می دهیم. هر رکورد ویژگی های مشترک را از Document به ارث می برد (مانند Id و Date) و ویژگی های خود را اضافه می کند و نشان می دهد که چگونه وراثت استفاده مجدد از کد را ساده می کند.
این یک سناریوی دنیای واقعی را نشان می دهد که در آن انواع اسناد مختلف داده های مشترکی را به اشتراک می گذارند اما ویژگی های منحصر به فرد خود را نیز دارند. وراثت در رکوردها به شما این امکان را می دهد که به طور موثر از داده های رایج استفاده مجدد کنید و در عین حال تغییرناپذیری و مزایای مقایسه ارزش رکوردها را حفظ کنید.
کد منبع: GitHub
امیدوارم این نکته به شما کمک کند از Records with Inheritance برای نوشتن کدهای سازمان یافته و کارآمدتر استفاده کنید! تا دفعه بعد
بیایید در مورد Records with Inheritance که در C# 9 معرفی شده است صحبت کنیم که به رکوردها اجازه می دهد از وراثت درست مانند کلاس ها استفاده کنند و روشی انعطاف پذیرتر و کارآمدتر برای کار با داده های تغییرناپذیر ارائه می دهند. مثال را در کد زیر ببینید.
public record Document(int Id, DateTime Date);
public record Invoice(int Id, DateTime Date, decimal Amount) : Document(Id, Date);
public record Receipt(int Id, DateTime Date, string Payer) : Document(Id, Date);
public class Program
{
public static void Main()
{
Invoice invoice = new(1, DateTime.Now, 150.00m);
Receipt receipt = new(2, DateTime.Now, "John");
Console.WriteLine(invoice); // Output: Invoice { Id = 1, Date = ..., Amount = 150.00 }
Console.WriteLine(receipt); // Output: Receipt { Id = 2, Date = ..., Payer = John }
}
}
توضیح:
رکوردها برای کار با داده های تغییرناپذیر و برای سناریوهایی که نیاز به مقایسه اشیاء بر اساس مقدار دارند، نه بر اساس مرجع، ایده آل هستند. با Records with Inheritance، می توانید سلسله مراتبی از انواع را بر اساس رکوردها ایجاد کنید، که در سناریوهایی که انواع داده های مختلف ویژگی های مشترک دارند، مفید است. تصور کنید برنامهای دارید که انواع مختلفی از اسناد (فاکتورها، رسیدها و غیره) را مدیریت میکند، که در آن همه ویژگیهایی مانند ID و Date را به اشتراک میگذارند. با استفاده از وراثت با رکوردها، می توانید یک رکورد پایه تعریف کنید و رکوردهای خاص دیگری را استخراج کنید.
این رویکرد کد شما را پاکتر و سازماندهیتر میکند و در عین حال مزایای تغییرناپذیری و مقایسه ارزش را حفظ میکند.
توضیح کد:
در این مثال سه رکورد داریم:
- Document: این رکورد پایه است که حاوی ویژگیهای رایج مانند ID و Date برای همه انواع سند است.
- فاکتور: این رکورد از Document به ارث می رسد و یک ویژگی خاص به نام Amount را اضافه می کند که نشان دهنده ارزش فاکتور است.
- رسید: این نیز از Document ارث می برد و دارایی Payer را اضافه می کند که نماینده شخصی است که پرداخت را انجام داده است.
در متد Main، یک نمونه از Invoice و دیگری از Receipt ایجاد می کنیم و مقادیر آنها را در کنسول نمایش می دهیم. هر رکورد ویژگی های مشترک را از Document به ارث می برد (مانند Id و Date) و ویژگی های خود را اضافه می کند و نشان می دهد که چگونه وراثت استفاده مجدد از کد را ساده می کند.
این یک سناریوی دنیای واقعی را نشان می دهد که در آن انواع اسناد مختلف داده های مشترکی را به اشتراک می گذارند اما ویژگی های منحصر به فرد خود را نیز دارند. وراثت در رکوردها به شما این امکان را می دهد که به طور موثر از داده های رایج استفاده مجدد کنید و در عین حال تغییرناپذیری و مزایای مقایسه ارزش رکوردها را حفظ کنید.
کد منبع: GitHub
امیدوارم این نکته به شما کمک کند از Records with Inheritance برای نوشتن کدهای سازمان یافته و کارآمدتر استفاده کنید! تا دفعه بعد