ویژگی‌های جدید C# 13

ویژگی‌های جدید 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;
}

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
ویژگی‌های جدید C# 3.0

ویژگی‌های جدید C# 3.0

آنچه در این پست میخوانید Language-Integrated Query (LINQ) (پرس‌وجوی یکپارچه با زبان) Lambda Expressions (عبارات لامبدا) Auto-Implemented Properties (خصوصیات خودکار…

بیشتر بخوانید
ویژگی‌های جدید C# 2.0

ویژگی‌های جدید C# 2.0

آنچه در این پست میخوانید ۱. Generics (کلیات) ۲. Partial Types (کلاس‌های جزئی) ۳. Anonymous Methods (متدهای بی‌نام) ۴. Nullable…

بیشتر بخوانید
ویژگی‌های جدید C# 1.2

ویژگی‌های جدید C# 1.2

آنچه در این پست میخوانید حلقه foreach و Dispose چرا Dispose مهم است؟ آنالیز عملکرد foreach در C# 1.2 قبل…

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.