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

ویژگی‌های جدید 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، عبارات پیش‌فرض ساده، و بهبودهای مرتبط با تاپل‌ها و پارامترهای جنریک، گام دیگری در راستای ساده‌تر و قدرتمندتر کردن زبان برداشته است. همچنین، تغییرات کامپایلر انعطاف بیشتری برای توسعه‌دهندگان پیشرفته فراهم می‌کند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
ویژگی‌های جدید 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…

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

نظرات

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

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