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

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

C# 11 ویژگی‌های جدید زیادی را معرفی کرده است که هدف آن‌ها بهبود بهره‌وری توسعه‌دهندگان، افزایش قدرت زبان و فراهم کردن ابزارهای انعطاف‌پذیرتر است. در اینجا یک نگاه کلی به ویژگی‌های جدید C# 11 داریم:

رشته‌های خام (Raw String Literals)

رشته‌های خام به شما این امکان را می‌دهند که رشته‌هایی را بدون نیاز به استفاده از توالی‌های فرار (escape sequences) بنویسید. این ویژگی به‌خصوص برای رشته‌هایی که شامل کاراکترهای خاص یا محتوای چندخطی هستند مفید است. یک رشته خام با سه علامت نقل قول (“””) شروع می‌شود و می‌تواند چند خطی باشد بدون اینکه خطوط جدید به‌طور غیرمنتظره در رشته نهایی ظاهر شوند.

مثال:

string longMessage = """
    This is a long message.
    It has several lines.
        Some are indented.
    """;

پشتیبانی از ریاضیات عمومی (Generic Math Support)

C# 11 پشتیبانی از ریاضیات عمومی را معرفی می‌کند که از طریق افزودن اعضای استاتیک مجازی در اینترفیس‌ها امکان‌پذیر است. این قابلیت به شما این امکان را می‌دهد که عملیات‌هایی مانند جمع، ضرب و … را روی انواع عمومی انجام دهید، که این کار انجام عملیات ریاضی را بر روی انواع مختلف داده‌ها ساده‌تر می‌کند.

مثال:

public interface IAdditionOperators
{
    static abstract TResult operator +(TSelf left, TOther right);
}

ویژگی‌های جدید در رشته‌های رشته‌ای (String Interpolation)

در C# 11 شما می‌توانید از رشته‌های رشته‌ای استفاده کنید که داخل آن‌ها امکان وجود چند خط وجود دارد. این ویژگی مخصوصاً زمانی مفید است که بخواهید عبارات C# طولانی‌تر یا پیچیده‌تری را در داخل رشته‌ها وارد کنید.

مثال:

string message = $"Hello, {userName}!";

الگوهای فهرست‌ها (List Patterns)

الگوهای فهرست‌ها امکان تطبیق توالی‌ها و آرایه‌ها را با استفاده از الگوهای مختلف فراهم می‌کنند. به این معنا که می‌توانید فهرستی از عناصر را با استفاده از الگوهایی مانند مقدار ثابت، نوع، ویژگی‌ها و … تطبیق دهید.

مثال:

int[] numbers = { 1, 2, 3 };
if (numbers is [1, 2, 3]) 
{
    Console.WriteLine("Matched!");
}

ویژگی‌های جدید در عملکردهای گروهی (Method Group Conversion)

در C# 11، تبدیل گروه متدها به نماینده‌ها (delegates) بهبود یافته است. در حال حاضر، کامپایلر می‌تواند از یک نمونه موجود از نماینده برای تبدیل گروه‌های متد استفاده کند، که این باعث بهبود کارایی می‌شود.

اعضای الزامی (Required Members)

با ویژگی جدید “Required Members”، شما می‌توانید اعضای کلاس را به‌عنوان الزامی مشخص کنید. این به این معنی است که هنگام ساخت شیء از آن کلاس، باید این اعضا به‌طور صریح مقداردهی شوند.

مثال:

public class Person
{
    public required string Name { get; set; }
    public required int Age { get; set; }
}

حروف UTF-8 برای رشته‌ها (UTF-8 String Literals)

در C# 11، شما می‌توانید از پسوند u8 برای نشان دادن رشته‌هایی با کدگذاری UTF-8 استفاده کنید. این ویژگی به‌ویژه زمانی مفید است که بخواهید رشته‌هایی را برای استفاده در پروتکل‌های متنی مانند HTTP ایجاد کنید.

مثال:

string utf8String = u8"Hello, UTF-8!";

انواع محلی در فایل‌ها (File-local Types)

در C# 11، می‌توانید از اصلاح‌کننده دسترسی file برای ایجاد نوع‌هایی استفاده کنید که فقط در فایل منبع خود قابل دسترسی باشند. این ویژگی به توسعه‌دهندگان این امکان را می‌دهد که از برخورد نام‌ها جلوگیری کنند.

مثال:

file class InternalClass { }

پشتیبانی از الگوهای تطبیق رشته ثابت با Span

در این نسخه، شما می‌توانید از الگوهای تطبیق برای بررسی تطابق رشته‌های ثابت با Span<char> یا ReadOnlySpan<char> استفاده کنید.

اعضای استاتیک در اینترفیس‌ها

حالا شما می‌توانید اعضای استاتیک در اینترفیس‌ها تعریف کنید که به شما این امکان را می‌دهد که عملیات‌های مختلفی مانند جمع و ضرب را در انواع عمومی پیاده‌سازی کنید.

این ویژگی‌ها و تغییرات جدید در C# 11 به توسعه‌دهندگان این امکان را می‌دهند که برنامه‌های کاربردی بهتری بنویسند و از قابلیت‌های زبان به صورت کارآمدتری بهره‌برداری کنند.

پست های مرتبط

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

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

آنچه در این پست میخوانید ویژگی‌های جدید C# 12 سازنده‌های اولیه (Primary Constructors) بیان‌های مجموعه (Collection Expressions) پارامترهای ref readonly…

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

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

آنچه در این پست میخوانید Record Structs Improvements of Struct Types Interpolated String Handler Global Using Directives File-scoped Namespace Declaration…

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

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

آنچه در این پست میخوانید رکوردها (Records) عبارات سطح بالا (Top-level Statements) بهبودهای Pattern Matching عدد صحیح با اندازه بومی…

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

نظرات

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

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