ویژگیهای جدید C# 13
C# 13 همراه با مجموعهای از قابلیتهای جدید منتشر شده است که تجربه توسعهدهندگان را بهبود میبخشد. برای استفاده از این ویژگیها، میتوانید آخرین نسخه Visual Studio 2022 یا SDK نسخه .NET 9 را دریافت کنید.
در این مقاله به بررسی تمامی ویژگیهای جدید ارائه شده در C# 13 خواهیم پرداخت و هر نکتهای را که برای آشنایی با این نسخه لازم است، توضیح میدهیم.
ویژگیهای جدید در C# 13
پارامترهای مجموعهها (params collections)
اکنون میتوانید از کلمه کلیدی params
نه تنها برای آرایهها، بلکه برای انواع مجموعههایی مانند System.Span<T>
و System.ReadOnlySpan<T>
نیز استفاده کنید. حتی میتوانید از انواعی که از IEnumerable<T>
یا IList<T>
پیروی میکنند، بهره ببرید.
مثال:
public void Concat(params ReadOnlySpan items)
{
for (int i = 0; i < items.Length; i++)
{
Console.Write(items[i]);
Console.Write(" ");
}
Console.WriteLine();
}
نوع جدید Lock و عملکرد آن
نوع جدیدی به نام System.Threading.Lock
به کتابخانه .NET اضافه شده است که برای همزمانسازی بهبود یافته طراحی شده است. استفاده از این نوع باعث بهبود کارایی و امنیت در مدیریت تداخلات چند رشتهای میشود.
مثال:
using var scope = new Lock().EnterScope();
توالی فرار جدید (e)
اکنون میتوانید از e
به عنوان دنبالهای برای کاراکتر ESCAPE (یونیکد U+001B) استفاده کنید.
بهبود نوع طبیعی گروههای متد (Method group natural type)
انتخاب متدهای اورلود شده در یک گروه متد بهینه شده است. این تغییر باعث سادهتر شدن فرآیند انتخاب و جلوگیری از خطاهای مربوط به ارثبری و تطابق نوع میشود.
دسترسی ضمنی به شاخصها در مقداردهی اولیه اشیا
اپراتور ^
اکنون در مقداردهی اولیه اشیا پشتیبانی میشود و شما میتوانید عناصر آرایه را به صورت معکوس مقداردهی کنید.
مثال:
var countdown = new TimerRemaining()
{
buffer =
{
[^1] = 0,
[^2] = 1,
[^3] = 2
}
};
استفاده از متغیرهای ref و unsafe در متدهای async و iterators
اکنون میتوانید از متغیرهای ref
در متدهای async
و بازگشتدهندهها استفاده کنید، البته با رعایت محدودیتهای ایمنی.
پشتیبانی از ref struct در جنریکها
قابلیت استفاده از ref struct
به عنوان آرگومان در انواع جنریک به C# 13 اضافه شده است. این تغییر امکانات بیشتری برای استفاده از System.Span<T>
در الگوریتمهای جنریک فراهم میکند.
پشتیبانی از partial برای propertyها و indexerها
اکنون میتوانید propertyها و indexerها را به صورت partial تعریف کنید.
مثال:
public partial class C
{
public partial string Name { get; set; }
}
اولویت در رزولوشن اورلودها
با استفاده از OverloadResolutionPriorityAttribute
، میتوانید مشخص کنید کدام اورلود بهتر از سایرین انتخاب شود.
کلمه کلیدی field
این کلمه کلیدی به عنوان یک قابلیت پیشنمایش معرفی شده و به شما اجازه میدهد که به فیلد پشتیبان یک property بدون تعریف فیلد جداگانه دسترسی پیدا کنید.
مثال:
public string Name
{
get => field;
set => field = value;
}
And To Do So From Now Until The Death, Whatever the Cost
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام