افزایش کارایی کدهای ایمن تا حد عملکرد کدهای ناایمن.
بهبود تدریجی ویژگیهای موجود.
این نسخه به توسعهدهندگان امکان داد تا با اطمینان بیشتر و بهینهتر کدنویسی کنند. همچنین گزینههای جدیدی در کامپایلر معرفی شد که تجربه برنامهنویسی را بهبود میبخشد.
بهبود کارایی کدهای ایمن
تغییرات این نسخه به توسعهدهندگان اجازه میدهد که کدهای ایمن را بدون نیاز به استفاده از قابلیتهای ناایمن (مانند 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# برداشت. این نسخه با ارائه ابزارهایی برای توسعهدهندگان، کارایی و امنیت بیشتری را در پروژهها تضمین میکند.
—
امیرحسین نوظهور
And To Do So From Now Until The Death, Whatever the Cost
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام