در نسخه دهم دات نت (.NET 10)، زبان برنامهنویسی سی شارپ (#C) نیز دستخوش تغییرات و بهبودهایی شدهاست. در اینجا به بررسی این تغییرات میپردازیم:
1. کلمه کلیدی field در ویژگیهای خودکار (Auto-Properties)
در نسخههای قبلی سی شارپ، برای دسترسی به فیلد پشتیبان (backing field) یک ویژگی خودکار و اعمال تغییرات جزئی مانند حذف فضاهای خالی (Trim) در مقدار ورودی، مجبور بودیم یک فیلد خصوصی (private field) جداگانه تعریف کنیم.
اما در C# 14، کلمه کلیدی field به شما این امکان را میدهد که مستقیماً به فیلد پشتیبان تولید شده توسط کامپایلر دسترسی داشته باشید.
مثال:
public string LastName
{
get => field;
set => field = value.Trim();
} این تغییر باعث میشود کد شما کوتاهتر، خواناتر و قابل نگهداریتر شود.
2. اصلاحکنندههای پارامتر لامبدا (Lambda Parameter Modifiers)
در نسخههای قبلی، استفاده از اصلاحکنندههای ref و out در لیست پارامترهای لامبداهای کوتاه (short-form lambdas) امکانپذیر نبود. اما اکنون این محدودیت برطرف شدهاست و میتوانید از این اصلاحکنندهها در لامبداهای کوتاه نیز استفاده کنید. این تغییر، هرچند کوچک است، اما یکی از محدودیتهای آزاردهنده قدیمی را رفع میکند.
3. عملگر nameof و انواع جنریک (Generics)
از عملگر nameof برای به دست آوردن نام یک متغیر، نوع یا عضو استفاده میشود. در C# 14، میتوانید از nameof بر روی انواع جنریک باز (open generic types) بدون نیاز به مشخص کردن پارامترهای نوع استفاده کنید. این تغییر جزئی، باعث کاهش لحظات "چرا باید این را مشخص کنم؟" میشود.
4. کلاس Span به عنوان شهروند درجه اول (First-Class Span)
کلاسهای <Span<T و <ReadOnlySpan<T برای کار با بخشهایی از حافظه به صورت کارآمد استفاده میشوند. در C# 14، این کلاسها به عنوان شهروندان درجه اول در نظر گرفته میشوند. این مورد به این معنا است که متدهای الحاقی (extension methods) که <ReadOnlySpan<T یا <Span<T را هدف قرار میدهند، به طور سازگارتری کار خواهند کرد، به ویژه در تبدیل از آرایهها.
نتیجه: کد کمتر، عملکرد بهتر در برنامههای دات نت.
5. رشتههای لیترال UTF-8 (UTF-8 String Literals) و رشتههای بزرگ
یک سوئیچ آزمایشی جدید معرفی شده است که رشتههای لیترال را به صورت UTF-8 در یک بخش داده جداگانه رمزگذاری میکند. این تغییر میتواند به شما کمک کند تا از محدودیت طول رشته 24 بیتی عبور کنید و اندازه DLLهای خود را کاهش دهید. این یک اصلاح پشت صحنه است که میتواند به طور چشمگیری اندازه اسمبلیها را برای پروژههای پر از متن کاهش دهد.