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

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

تاریخ انتشار: می 2018

نسخه C# 7.3 با دو هدف اصلی منتشر شد:

  1. افزایش کارایی کدهای ایمن تا حد عملکرد کدهای ناایمن.
  2. بهبود تدریجی ویژگی‌های موجود.

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

بهبود کارایی کدهای ایمن

تغییرات این نسخه به توسعه‌دهندگان اجازه می‌دهد که کدهای ایمن را بدون نیاز به استفاده از قابلیت‌های ناایمن (مانند unsafe) بهینه کنند.

1. دسترسی به فیلدهای ثابت بدون پین کردن (Pinning)

مانند نسخه 7.2، این ویژگی امکان دسترسی مستقیم به فیلدهای ثابت را بدون نیاز به عملیات پین کردن فراهم می‌کند و باعث بهبود امنیت و سرعت اجرا می‌شود.

2. بازتخصیص متغیرهای محلی ref

این ویژگی امکان تغییر مرجع متغیرهای ref محلی را فراهم می‌کند و انعطاف‌پذیری بیشتری برای مدیریت داده‌ها ارائه می‌دهد.

3. مقداردهی اولیه آرایه‌های stackalloc

استفاده از آرایه‌های stackalloc با مقادیر اولیه، نوشتن کدهای سریع و ایمن برای مدیریت حافظه پشته را ساده‌تر می‌کند.

4. استفاده از fixed با هر نوع دارای الگو

این قابلیت امکان استفاده از عبارت fixed را برای انواع داده‌ای که از یک الگوی خاص پشتیبانی می‌کنند، فراهم می‌کند و کار با حافظه مدیریت‌نشده را بهبود می‌بخشد.

5. محدودیت‌های جنریک بیشتر

C# 7.3 محدودیت‌های بیشتری را برای انواع جنریک معرفی کرد، که باعث افزایش انعطاف در طراحی کلاس‌ها و متدهای جنریک می‌شود.

بهبودهای موجود در ویژگی‌های فعلی

1. مقایسه == و != در نوع‌های Tuple

در این نسخه، مقایسه‌های == و != بین نوع‌های Tuple به صورت مستقیم امکان‌پذیر شده است.

مثال:

var tuple1 = (1, "one");
var tuple2 = (1, "one");

Console.WriteLine(tuple1 == tuple2); // خروجی: True

2. استفاده از متغیرهای expression در مکان‌های بیشتر

اکنون متغیرهای تعریف‌شده در عبارات (Expression Variables) را می‌توان در مکان‌های بیشتری استفاده کرد.

مثال:

if (int.TryParse("123", out var number))
{
    Console.WriteLine(number); // خروجی: 123
}

3. اضافه کردن Attribute به فیلدهای پشتیبان

امکان اضافه کردن Attribute به فیلدهای پشتیبان برای Properties خودکار فراهم شده است. این ویژگی به توسعه‌دهندگان امکان کنترل بیشتر بر روی فیلدهای تولیدشده توسط کامپایلر را می‌دهد.

مثال:

public class Example
{
    [field: NonSerialized]
    public int MyProperty { get; set; }
}

4. بهبود رزولوشن متدها با تفاوت آرگومان‌ها در in

رزولوشن متدها اکنون بهبود یافته است و در مواردی که تفاوت در استفاده از کلیدواژه in وجود دارد، عملکرد دقیق‌تری دارد.

5. کاهش موارد مبهم در Overload Resolution

رزولوشن Overload متدها در این نسخه به گونه‌ای تغییر کرده است که موارد کمتری به عنوان مبهم (Ambiguous) شناخته شوند.

گزینه‌های جدید کامپایلر

1. گزینه publicsign

این گزینه برای امضای اسمبلی‌های متن‌باز (OSS) استفاده می‌شود و امکان امضای اسمبلی‌ها بدون نیاز به کلید خصوصی را فراهم می‌کند.

2. گزینه pathmap

گزینه pathmap به توسعه‌دهندگان اجازه می‌دهد تا یک نقشه برای دایرکتوری‌های منبع ارائه دهند. این قابلیت برای تولید خروجی‌های مستقل از مسیر منبع مفید است.

نتیجه‌گیری

C# 7.3 با ارائه ویژگی‌های بهینه‌سازی برای کدهای ایمن و بهبود قابلیت‌های فعلی، گامی مهم در جهت ارتقای زبان C# برداشت. این نسخه با ارائه ابزارهایی برای توسعه‌دهندگان، کارایی و امنیت بیشتری را در پروژه‌ها تضمین می‌کند.

پست های مرتبط

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

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

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

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

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

آنچه در این پست میخوانید رشته‌های خام (Raw String Literals) پشتیبانی از ریاضیات عمومی (Generic Math Support) ویژگی‌های جدید در…

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

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

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

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

نظرات

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

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