C# 12 در راه است! 3 ویژگی که ذهن شما را منفجر می کند

اوه، برای یک خبر خوب آماده شوید! مایکروسافت رفته است و یکسری ویژگی های جدید درخشان را به C# 12 Preview اضافه کرده است. در این پست، ما مستقیماً به این ویژگی های جالب جدید می پردازیم. پس بزن بریم!
سازنده های اولیه برای کلاس ها و ساختارهای بدون رکورد
این اولین ویژگی پیش نمایش C# 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;
}
در Student
کلاس بالا، پارامترهای سازنده اولیه در سراسر بدنه کلاس موجود است.
به عنوان مثال، ما می توانیم این کار را با Name
(تنظیم شده توسط name.Trim()
). علاوه بر این، grades
پارامتر در ویژگی دسترسی برای استفاده می شود GPA
.
بنابراین، میدانید چگونه ویژگیها بهطور خودکار برای پارامترهای سازنده اصلی در کلاسها و ساختارهای غیر رکوردی ساخته نمیشوند؟ خوب، معلوم است که باید خودتان آنها را بسازید تا نشان دهید کدام دادهها در فضای باز هستند. این تقریباً با نحوه استفاده از کلاس ها مطابقت دارد، درست است؟
اکنون، بخش جالب اینجاست: سازندههای اولیه میتوانند نجاتدهنده کاملی باشند، وقتی صحبت از پرهیز از دردسر اعلام فیلدهای خصوصی و، میدانید، پیوند دادن مقادیر پارامتر به آن فیلدها در بدنههای سازنده خستهکننده به میان میآید.
می خواهید بدانید چگونه آن را از بین ببرید؟ فقط یک پرتاب کنید this(…)
Initializer برای زنگ زدن سازنده دیگری برای همان کلاس یا ساختار، اطمینان حاصل کنید که سازنده اولیه وارد عمل می شود.
استفاده از دستورالعمل ها برای انواع اضافی
این بخش ویژگی جدید C# 12 به انواع مقادیر غیر قابل تهی محدود نمی شود و همچنین شامل تاپل هایی با انواع یا نام عناصر است.
در اینجا مثالی از نحوه استفاده از نام مستعار برای انواع آورده شده است:
using Measurement = (string Units, int Distance);
using PathOfPoints = int[];
using DatabaseInt = int?;
در مثال بالا، ما در حال ایجاد نام مستعار برای یک تاپل، آرایه ای از اعداد صحیح و یک عدد صحیح تهی هستیم.
می توانید از این نام مستعار به جای نوع اصلی استفاده کنید، در هر جایی که معمولاً از آن نوع استفاده می شود:
public void CalculateDistance(PathOfPoints points)
{ }
مقادیر پیش فرض برای عبارات لامبدا
این ویژگی است مشابه مقادیر پیش فرض برای پارامترهای متد معمولی، و به توسعه دهندگان اجازه می دهد تا عبارات لامبدا انعطاف پذیرتر و مختصرتری ایجاد کنند.
فقط علامت مساوی اضافه کنید و مقداری که می خواهید به پارامتر پس از اعلام آن نسبت دهید.
مثلا، (int addTo = 2) => addTo + 1
مقدار پیش فرض را تنظیم می کند 2
برای addTo
پارامتر، که در صورت عدم ارائه مقدار در هنگام فراخوانی عبارت lambda استفاده می شود:
var addWithDefault = (int addTo = 2) => addTo + 1;
addWithDefault(); // 3
addWithDefault(5); // 6
با این کار، شما مجبور نخواهید بود به سیستم تکیه کنید DefaultParameterValue
. برای اینکه کد مختصرتر و قابل خواندن باشد، از فضای نام InteropServices برای ایجاد مقادیر پیش فرض برای پارامترهای عبارت lambda استفاده کنید.
قبل از C# 12، توسعه دهندگان مجبور بودند از یک تابع محلی یا همان استفاده کنند DefaultParameterValue
ویژگی برای تعیین مقادیر پارامتر پیش فرض برای عبارات لامبدا. این رویکرد نسبت به نحو جدید دست و پا گیرتر و کمتر بصری بود.
این به توسعه دهندگان اجازه می دهد تا کدهای مختصر و قابل خواندن بیشتری بنویسند، زیرا می توانند مقادیر پیش فرض را برای پارامترهای رایج ارائه دهند.
همچنین کمک می کند از تکرار عبارات مشابه لامبدا اجتناب کنید تنها با تغییرات جزئی در مقادیر پارامترها.
در نهایت، مقادیر پارامترهای پیشفرض برای عبارات لامبدا در فراداده گنجانده شده و از طریق بازتاب در دسترس هستند. این کار نوشتن کدی که از عبارات لامبدا به صورت پویا استفاده می کند را برای توسعه دهندگان آسان تر می کند.
نتیجه
در این مقاله به بررسی برخی از ویژگی های جدیدی که مایکروسافت در پیش نمایش C# 12 معرفی کرده است پرداخته ایم.
این ویژگیهای جدید، مانند سازندههای اولیه برای کلاسها و ساختارهای بدون رکورد، استفاده از دستورالعملها برای انواع اضافی، و مقادیر پیشفرض برای عبارات لامبدا، به توسعهدهندگان کمک میکند تا کد مختصر و خواناتری بنویسند.
مایکروسافت به طور مداوم در حال کار بر روی بهبود زبان سی شارپ است تا آن را کارآمدتر و توسعهدهندهتر کند. توسعه دهندگان می توانند انتظار داشته باشند که در آینده نزدیک شاهد پیشرفت های بیشتری در این پلت فرم باشند.