خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

C# 12: ویژگی های جدید و هیجان انگیزی که توسعه شما را افزایش می دهد

کشف کنید که چگونه تغییرات آتی کد شما را بهبود می بخشد و زندگی شما را به عنوان یک توسعه دهنده کمی آسان تر می کند.

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

عبارات سوئیچ بهبود یافته

سی شارپ 8 عبارات سوئیچ پایه ای را معرفی کرد که به شما امکان می دهد منطق شرطی پیچیده را به طور مختصر و به شکلی قابل خواندن بیان کنید. C# 12 با معرفی یک نحو جدید مطابق با الگو برای عبارات سوئیچ، این کار را بیشتر می کند، و نوشتن کد رسا و مختصر را آسان تر می کند.

قطعه کد زیر را در نظر بگیرید.

var result = obj switch
{
    int i when i > 0 => "Positive",
    int i when i < 0 => "Negative",
    _ => "Zero"
};

این کد از عبارات سوئیچ برای تعیین مثبت، منفی یا صفر بودن یک عدد استفاده می کند. در سی شارپ 12، می توانید این کد را با استفاده از نحو جدید تطبیق الگو ساده تر کنید:

var result = obj switch
{
    > 0 => "Positive",
    < 0 => "Negative",
    _ => "Zero"
};

این نحو به شما امکان می دهد کلمه کلیدی when را حذف کنید و از عملگرهای رابطه ای مستقیماً در عبارت سوئیچ استفاده کنید.

سازندگان اولیه برای کلاس ها و سازه ها

اکنون می توانید سازنده های اولیه را در هر کلاس یا ساختاری ایجاد کنید (یک جایگزین کلاس سبک). با استفاده از سازنده های اولیه، می توانید پارامترهایی را به اعلان کلاس اضافه کنید و از این مقادیر در بدنه کلاس استفاده کنید.

مطلب مرتبط:   نحوه کار با فایل های YAML در Go

C# 9 سازنده های اولیه را به عنوان بخشی از نحو موقعیتی برای رکوردها معرفی کرد. سی شارپ 12 اینها را به تمام ساختارها و کلاس ها گسترش می دهد.

می توانید پارامترها را بعد از نام نوع در پرانتز مانند شکل زیر قرار دهید:

public class Student(int id, string name, IEnumerable<decimal> grades)
{
  public Student(int id, string name) : this(id, name, Enumerable.Empty<decimal>()) { }
  public int Id => id;
  public string Name { get; set; } = name.Trim();
  public decimal GPA => grades.Any() ? grades.Average() : 4.0m;
}

پارامترهای یک سازنده اولیه در کل بدنه نوع اعلانگر در محدوده قرار دارند. شما می توانید خواص یا فیلدها را تنظیم کنید یا همچنین می توانید از آنها در متدها یا توابع محلی به عنوان متغیر استفاده کنید. شما می توانید این پارامترها را به یک سازنده پایه نیز ارائه دهید.

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

رشته های درون یابی از سی شارپ 6 وجود داشته اند. در سی شارپ 12، اکنون می توانید با استفاده از عبارات پیچیده مقادیر پویا برای رشته ها ایجاد کنید.

int i = 5;
string output = $"The value of i is {i}, and its square is {i*i}.";
Console.WriteLine(output);

این کد “مقدار i 5 و مربع آن 25” را چاپ می کند.

استفاده از دستورالعمل ها برای انواع اضافی

با سی شارپ 12، می توانید از دستورالعمل استفاده از نام مستعار برای هر نوع مستعار استفاده کنید، نه فقط انواع نامگذاری شده. می‌توانید نام مستعار معنایی برای تاپل‌ها، آرایه‌ها، اشاره‌گرها یا دیگر انواع ناامن ایجاد کنید.

در اینجا چند نمونه هستند:

using Measurement = (string Units, int Distance);
using UnitsInt = int?;
Aliases usage example:
public void Calculation(Measurement measurement)
{
    // Method Body
}

بهبود بیان لامبدا

C# 12 عبارات لامبدا را با اجازه دادن به شما برای تعریف مقادیر پیش‌فرض برای پارامترها، تقویت می‌کند. نحو با سایر پارامترهای پیش فرض یکسان است:

مطلب مرتبط:   هر آنچه که برای شروع نوشتن Rust باید بدانید

به عنوان مثال، (int incrementTo = 5) => incrementTo + 1 مقدار پیش‌فرض 5 را برای پارامتر incrementTo تعیین می‌کند، که اگر مقدار آن را ارسال نکنید، فراخوانی لامبدا از آن استفاده می‌کند.

var incrementWithDefault = (int incrementTo = 5) => incrementTo + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10

علاوه بر این، بسیاری از پیشرفت‌های دیگر به عبارات لامبدا آمد تا آنها را مؤثرتر کند.

مثلا:

  • اکنون می توانید عبارات پیچیده تری را در توابع لامبدا ایجاد کنید.
  • اکنون می توانید عبارات لامبدا را به درخت های بیان تبدیل کنید که پرس و جوهای پیچیده را ساده کرده و عملکرد را بهینه می کند.

Async Streams

می‌توانید از طریق منابع داده ناهمزمان با ویژگی جدید جریان‌های ناهمگام در C# 12 تکرار کنید. این تکرارکننده جدید – منتظر مقدمه – به شما کمک می‌کند روی مجموعه‌ای از داده‌های ناهمگام تکرار کنید:

await foreach (var item in GetItemsAsync())
{
    Console.WriteLine(item.value);
}

C# 12: کد انقلابی با ویژگی های جدید و هیجان انگیز

در انتظار C# 12، می توانید انتظار یک به روز رسانی بازی را با ویژگی های جدید هیجان انگیز داشته باشید. این پیشرفت‌ها، مانند عبارات سوئیچ پیشرفته، سازنده‌های اولیه و بهبود عبارات لامبدا، نشان‌دهنده تمرکز قوی بر روی سادگی، انعطاف‌پذیری و عملکرد کد هستند.

C# 12 آماده ارائه یک جهش قابل توجه به جلو است و شما را قادر می سازد کدهای رسا، کارآمدتر و قدرتمندتر بنویسید.