توسعه دهندگان سی شارپ باید درباره sharplab.io بدانند

Summarize this content to 400 words in Persian Lang
این فقط تمرین نیست که به شما در تسلط بر C# کمک می کند. استفاده از ابزارهایی برای نگاه کردن به زیر کاپوت، درک شما از ویژگی های مختلف زبان را تسریع می کند و به شما کمک می کند کد بهتر و کارآمدتر بنویسید. Sharplab.io یکی از ابزارهایی است که به شما کمک می کند تا به سرعت برخی از ویژگی های زبان C# را یاد بگیرید و درک کنید. شما می توانید از این ابزار برای نشان دادن کدهای C# “پایین شده” استفاده کنید.
کاهش چیست؟
Lowering جایی است که کامپایلر ویژگی های زبان سطح بالا را به ویژگی های ساده تر و سطح پایین تبدیل می کند. کاهش مزیت اضافی برای نویسندگان کامپایلر دارد، زیرا می توانند ویژگی های زبان جدید را بدون نیاز به تغییر CIL اساسی یا زبان میانی مشترک (CIL است که توسط CLR یا Common Language Runtime اجرا می شود) پیاده سازی کنند.
عملگر الحاق رشته ها
بیایید به یک مثال ساده از استفاده از += روی یک رشته برای شروع.
در زیر تصویری از سایت sharplab.io آمده است. در قسمت سمت چپ کدی که من نوشتم است و در سمت راست کد پایین آمده را نشان می دهد. همانطور که می بینید، += اپراتور برای استفاده پایین آمده است string.Concat.
در زیر همان کد اما در حالت انتشار پایین آمده است. توجه کنید که چگونه کامپایلر استفاده از the را حذف کرده است text متغیر
لیست در مقابل تکرار Span
بیایید اکنون به مثال پیچیده تری با استفاده از List and Span نگاه کنیم.
در زیر تعدادی کد با استفاده از یک لیست آورده شده است. توجه کنید که چگونه foreach با استفاده از Enumerator به یک حلقه while تبدیل می شود.
در زیر کد مشابهی با استفاده از Span وجود دارد. به نظر شما کدام یک سریعتر عمل می کند؟
درک سوابق
به عنوان تمرینی برای شما، از سایت برای مشاهده کدهای پایینتر برای رکوردها استفاده کنید. موارد زیر را در قسمت سمت چپ در sharplab.io کپی کنید.
var rec1 = new RecordClass(21, “hello”);
// Lowered to use the compiler generated Deconstruct method.
var (num, str) = rec1;
// Lowered to use the compiler generated Clone method.
var rec2 = rec1 with { Num = 42 };
public record RecordClass (int Num, string Str);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
وقتی این کار را انجام دادید، تمام ویژگیها و روشهایی که به صورت خودکار تولید میشوند را میبینید که هنگام استفاده از رکوردها به صورت رایگان دریافت میکنید:
این کلاس رکورد را با ارائه ویژگی های فقط خواندنی/init غیرقابل تغییر می کند.
Equals() و عملگرهای equals/not برابر تولید می کند.
یک پیاده سازی ToString() تولید می کند.
این یک متد GetHashCode() ایجاد می کند تا بتوانید از رکورد در ساختارهای داده هش مانند Dictionary استفاده کنید.
این یک متد Descontruct() تولید می کند که هنگام ساختارشکنی رکورد استفاده می شود.
یک متد Clone() تولید می کند که در این مورد هنگام استفاده از آن استفاده می شود with کلمه کلیدی
تمرینات بیشتری برای امتحان کردن
بنابراین با استفاده از این ابزار به کاوش ادامه دهید و ببینید چه چیزی می توانید بیاموزید. ببینید چگونه using بیانیه کاهش یافته است. با استفاده از نحو پرس و جو مقداری LINQ را امتحان کنید. یک را امتحان کنید switch بیانیه روشن کردن رشته ها اگر احساس شجاعت می کنید، تلاش کنید async روش ها شما حتی می توانید شروع به کاوش در CIL تولید شده برای درک عملکرد پیاده سازی های مختلف کنید.
این فقط تمرین نیست که به شما در تسلط بر C# کمک می کند. استفاده از ابزارهایی برای نگاه کردن به زیر کاپوت، درک شما از ویژگی های مختلف زبان را تسریع می کند و به شما کمک می کند کد بهتر و کارآمدتر بنویسید. Sharplab.io یکی از ابزارهایی است که به شما کمک می کند تا به سرعت برخی از ویژگی های زبان C# را یاد بگیرید و درک کنید. شما می توانید از این ابزار برای نشان دادن کدهای C# “پایین شده” استفاده کنید.
کاهش چیست؟
Lowering جایی است که کامپایلر ویژگی های زبان سطح بالا را به ویژگی های ساده تر و سطح پایین تبدیل می کند. کاهش مزیت اضافی برای نویسندگان کامپایلر دارد، زیرا می توانند ویژگی های زبان جدید را بدون نیاز به تغییر CIL اساسی یا زبان میانی مشترک (CIL است که توسط CLR یا Common Language Runtime اجرا می شود) پیاده سازی کنند.
عملگر الحاق رشته ها
بیایید به یک مثال ساده از استفاده از +=
روی یک رشته برای شروع.
در زیر تصویری از سایت sharplab.io آمده است. در قسمت سمت چپ کدی که من نوشتم است و در سمت راست کد پایین آمده را نشان می دهد. همانطور که می بینید، +=
اپراتور برای استفاده پایین آمده است string.Concat
.
در زیر همان کد اما در حالت انتشار پایین آمده است. توجه کنید که چگونه کامپایلر استفاده از the را حذف کرده است text
متغیر
لیست در مقابل تکرار Span
بیایید اکنون به مثال پیچیده تری با استفاده از List and Span نگاه کنیم.
در زیر تعدادی کد با استفاده از یک لیست آورده شده است. توجه کنید که چگونه foreach با استفاده از Enumerator به یک حلقه while تبدیل می شود.
در زیر کد مشابهی با استفاده از Span وجود دارد. به نظر شما کدام یک سریعتر عمل می کند؟
درک سوابق
به عنوان تمرینی برای شما، از سایت برای مشاهده کدهای پایینتر برای رکوردها استفاده کنید. موارد زیر را در قسمت سمت چپ در sharplab.io کپی کنید.
var rec1 = new RecordClass(21, "hello");
// Lowered to use the compiler generated Deconstruct method.
var (num, str) = rec1;
// Lowered to use the compiler generated Clone method.
var rec2 = rec1 with { Num = 42 };
public record RecordClass (int Num, string Str);
وقتی این کار را انجام دادید، تمام ویژگیها و روشهایی که به صورت خودکار تولید میشوند را میبینید که هنگام استفاده از رکوردها به صورت رایگان دریافت میکنید:
- این کلاس رکورد را با ارائه ویژگی های فقط خواندنی/init غیرقابل تغییر می کند.
- Equals() و عملگرهای equals/not برابر تولید می کند.
- یک پیاده سازی ToString() تولید می کند.
- این یک متد GetHashCode() ایجاد می کند تا بتوانید از رکورد در ساختارهای داده هش مانند Dictionary استفاده کنید.
- این یک متد Descontruct() تولید می کند که هنگام ساختارشکنی رکورد استفاده می شود.
- یک متد Clone() تولید می کند که در این مورد هنگام استفاده از آن استفاده می شود
with
کلمه کلیدی
تمرینات بیشتری برای امتحان کردن
بنابراین با استفاده از این ابزار به کاوش ادامه دهید و ببینید چه چیزی می توانید بیاموزید. ببینید چگونه using
بیانیه کاهش یافته است. با استفاده از نحو پرس و جو مقداری LINQ را امتحان کنید. یک را امتحان کنید switch
بیانیه روشن کردن رشته ها اگر احساس شجاعت می کنید، تلاش کنید async
روش ها شما حتی می توانید شروع به کاوش در CIL تولید شده برای درک عملکرد پیاده سازی های مختلف کنید.