در C# 7.2 میتوان با value types (مانند structs) همانند reference types (مانند کلاسها) رفتار کرد. جائیکه کارآیی برنامه بسیار حائز اهمیت باشد (مانند بازیها)، استفاده از structs و value types بسیار مرسوم است؛ از این جهت که این نوعها بر روی heap تخصیص داده نمیشوند. اما مشکل آنها این است که زمانیکه به متدها ارسال میشوند، مقدار آنها ارسال خواهد شد و برای این منظور نیاز به ایجاد یک کپی جدید از آنها میباشد. برای رفع این مشکل و کاهش سربار ...
C# 7.2 به همراه تعداد کوچکی از بهبودهای کامپایلر است و با Visual Studio 2017 نگارش 15.5 ارائه شده و روش فعالسازی آن با نگارش 7.1 آن یکی است (انتخاب گزینهی « C# latest minor version (latest) » در تنظیمات پیشرفتهی Build خواص پروژه). همچنین اگر از VSCode استفاده میکنید، نگارش 1.14 افزونهی #C آن، پشتیبانی کاملی را از C# 7.2 به همراه دارد؛ در اینجا، افزودن خاصیت <LangVersion>latest</LangVersion> به فایل csproj برنامه برای استفاد ...
binary literals و digit separators دو ویژگی جدید در سیشارپ 7 هستند که باعث افزایش خوانایی کدها خواهند شد. Binary Literals از همان نسخههای اولیه سیشارپ قابلیت تعریف مقادیر عددی در مبنای 10 و 16 موجود بوده و تا قبل از سیشارپ 7 روش رایج برای تعریف مقادیر هگزادسیمال استفاده از enum بوده است: [Flags]
public enum Option
{
None = 0x00,
Option1 = 0x01,
Option2 = 0x02,
Option3 = 0x04,
Option4 = 0x08,
Opt ...
C# 7 به همراه تغییرات قابل توجهی در مورد نحوهی دریافت خروجی از متدها است که نمونههایی از آنها را مانند tuples و out variable ، پیشتر بررسی کردیم. در ادامه تغییرات جدید دیگری را به نام ref locals و ref returns نیز بررسی خواهیم کرد و هدف از آن، کاهش تعداد بار کپی کردن مقادیر و یا اعمال dereferencing جهت بالا بردن کارآیی برنامه هستند.
انتقال توسط مقدار
اگر پارامتری به صورت value type تعریف شود، این مقدار درو ...