ویژگیهای جدید C# 7.1
تاریخ انتشار: آگوست 2017
نسخه 7.1 زبان برنامهنویسی C# نقطه عطفی در تاریخ این زبان محسوب میشود. این نسخه با اضافه کردن قابلیت انتشار نسخههای نقطهای (Point Releases)، انعطاف بیشتری در ارائه بهروزرسانیها و ویژگیهای جدید فراهم کرد. در این نسخه، علاوه بر تغییرات مربوط به کامپایلر، چند ویژگی جدید به زبان اضافه شد که نوشتن کد را آسانتر و کارآمدتر میکند.
متد async Main
در نسخه 7.1، متد Main
به عنوان نقطه ورود برنامهها میتواند با کلمه کلیدی async
تعریف شود. این قابلیت، پشتیبانی از عملیاتهای غیرهمزمان (Asynchronous) را در سطح بالاتری ممکن میسازد.
مثال:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
await Task.Delay(1000);
Console.WriteLine("Hello, Async World!");
}
}
این ویژگی به توسعهدهندگان اجازه میدهد تا عملیاتهایی مانند خواندن فایل، ارسال درخواستهای HTTP، یا هر عملیات غیرهمزمان دیگری را مستقیماً در متد Main
مدیریت کنند.
عبارات پیشفرض ساده (Default Literal Expressions)
در این نسخه میتوانید از کلمه کلیدی default
بدون مشخص کردن نوع در جاهایی استفاده کنید که نوع داده از متن مشخص است. این ویژگی باعث سادهتر شدن کدنویسی در مواقعی میشود که نیازی به ارائه مقدار اولیه پیچیده نیست.
قبل از C# 7.1:
int? number = default(int?);
در C# 7.1:
int? number = default;
این قابلیت به کدنویسی مختصرتر و قابل خواناتر کمک میکند.
نامگذاری عناصر تاپل استنباطشده (Inferred Tuple Element Names)
در نسخههای قبلی، هنگام استفاده از تاپلها، باید به صراحت نام عناصر را مشخص میکردید. در نسخه 7.1، نام عناصر تاپل میتواند به صورت خودکار از متغیرهایی که مقداردهی شدهاند، استنباط شود.
مثال:
string firstName = "Ali";
string lastName = "Rezaei";
// بدون نیاز به تعریف نامهای اضافی
var person = (firstName, lastName);
Console.WriteLine(person.firstName); // خروجی: Ali
Console.WriteLine(person.lastName); // خروجی: Rezaei
این ویژگی کدهایی که از تاپل استفاده میکنند را خواناتر و سادهتر میکند.
تطبیق الگو روی پارامترهای جنریک (Pattern Matching on Generic Type Parameters)
در این نسخه، تطبیق الگو (Pattern Matching) روی متغیرهایی که نوع آنها یک پارامتر جنریک است، امکانپذیر شده است. این قابلیت انعطاف بیشتری در هنگام کار با نوعهای عمومی (Generic Types) ارائه میدهد.
مثال:
void CheckType(T input)
{
if (input is int number)
{
Console.WriteLine($"It's an integer: {number}");
}
else if (input is string text)
{
Console.WriteLine($"It's a string: {text}");
}
else
{
Console.WriteLine("Unknown type");
}
}
CheckType(42); // خروجی: It's an integer: 42
CheckType("Hello"); // خروجی: It's a string: Hello
این قابلیت کار با پارامترهای جنریک را بسیار انعطافپذیرتر کرده است.
رفتار جدید کامپایلر
در نسخه 7.1، دو گزینه جدید به کامپایلر اضافه شده است که کنترل بیشتری بر تولید اسمبلیهای مرجع (Reference Assemblies) ارائه میدهد:
-refout
: این گزینه برای ایجاد اسمبلی مرجع استفاده میشود.-refonly
: این گزینه تنها اسمبلی مرجع را تولید میکند و فایلهای پیادهسازی (Implementation) ایجاد نمیکند.
این تغییرات برای توسعهدهندگانی که در زمینه تولید کتابخانههای بزرگ یا مدیریت وابستگیها فعالیت میکنند، اهمیت بالایی دارد.
نتیجهگیری
نسخه 7.1 زبان C# با معرفی ویژگیهایی مانند متد async Main
، عبارات پیشفرض ساده، و بهبودهای مرتبط با تاپلها و پارامترهای جنریک، گام دیگری در راستای سادهتر و قدرتمندتر کردن زبان برداشته است. همچنین، تغییرات کامپایلر انعطاف بیشتری برای توسعهدهندگان پیشرفته فراهم میکند.
And To Do So From Now Until The Death, Whatever the Cost
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام