
آموزش قابلیت های جدید در سی شارپ 9
آموزش قابلیت های جدید در سی شارپ 9 یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی در سی شارپ 9 چه قابلیت های جدیدی اضافه شده است؟ می باشد که با نام اصلی Whats New in C# 9 از شرکت Pluralsight منتشر شده است.
قابلیت های نسخه 9 سی شارپ
در نسخه نهم از زبان برنامه نویسی سی شارپ record ها تعریف شده اند. با استفاده از کلمه کلیدی record شما می توانید Refrence Type هایی را ایجاد کنید که به صورت درونی قابلیت هایی دارند که با استفاده از آنها می توانید داده ها را کپسوله کنید. با استفاده از Record ها شما می توانید Property های immutable را با استفاده از positional parameter ها و یا Syntax استاندارد مربوط به تعریف کردن یک Property ایجاد نمایید. هرچند که Record ها می توانند به صورت immutable نیز تعریف شوند، اما نتیجه اصلی و رسالت اساسی Record ها استفاده شدن از آنها در ایجاد کردن Data Model های immutable می باشد. record ها قابلیت های مختلفی را ارائه می دهند که مهم ترین آنها را در قسمت زیر برای شما قرار داده ایم.

- یک Syntax ساده و تمیز به منظور ایجاد کردن Refrence Type هایی که Property های immutable دارند.
- امکان اضافه کردن رفتار و یا Behavior به منظور داشتن Refrence Type های داده محور و یا data-centric.
- امکان پیاده سازی تصاویر مبتنی بر مقادیر و یا Value equality.
- یک Syntax ساده و تمیز به منظور ایجاد کردن تغییرات غیر مخرب و یا اصطلاحاً nondestructive mutation.
- قابلیت های درونی به منظور فرمت بندی کردن داده ها برای نمایش داده شدن به کاربر.
- پشتیبانی کردن از سلسله مراتب های وراثت.
دقت کنید که بدون استفاده کردن از Record ها می توانید Type های data-centric ایجاد کنید. به منظور انجام این کار می توانید از structure ها استفاده کنید. در structure ها نیز قابلیت value equality و یا تساوی مبتنی بر مقادیر وجود دارد. در structure ها نیز امکان اضافه کردن رفتار و یا Behavior وجود دارد اما در ایجاد کردن Data Model های نسبتاً بزرگ استفاده کردن از structure ها معایب مختلفی را دارند که در ادامه به آن می پردازیم.
معایب Structure ها
- structure ها در زبان برنامه نویسی سی شارپ از وراثت و یا inheritance پشتیبانی نمی کنند.
- structure ها در پیاده سازی کردن تساوی مبتنی بر مقادیر و یا value equality عملکرد ضعیف تری دارند. برای value type ها می توان از متد Equals استفاده کرد. این متد از reflection به منظور پیدا کردن تمامی فیلدها استفاده می کند. (ضمناً می توانید از آموزش Reflection در زبان برنامه نویسی سی شارپ استفاده کنید.) این در حالی است که در زمان استفاده کردن از record ها کامپایلر متد Equals را ایجاد و یا generate می کند. در عمل پیاده سازی تساوی مبتنی بر مقادیر value equality در record ها به مراتب سریع تر انجام می شود.
- structure ها از حافظه بیشتری در برنامه نویسی استفاده می کنند. دلیل این موضوع نیز این است که هر instance و یا نمونه از یک structure یک کپی کامل از تمامی مقادیر آن structure است. این در حالی است که record ها به صورت refrence type پیاده سازی شده اند. بنابراین یک instance از یک record فقط شامل یک refrence به داده ها می باشد.
- غیر قابل تغییر دادن و یا immutability. یک رکورد لزوماً غیر قابل تغییر و یا immutability نیست. شما در یک record می توانید property هایی را تعریف کنید که set accessors دارند و علاوه بر این می توانید فیلد هایی را داشته باشید که readonly نباشند. با این وجود هرچند که می توان record ها را به صورت قابل تغییر mutable, تعریف کرد اما استفاده کردن از record ها برای ساختن Data Model های immutable بسیار توصیه می شود.
Setterهای Init-only و Recordها چه تغییری در مدلسازی داده ایجاد میکنند؟
در آموزش Whats New in C# 9 با قابلیتهایی آشنا میشوید که نحوه تعریف و مدیریت دادهها را در کلاسهای C# تغییر میدهند. یکی از موضوعات اصلی، اهمیت Immutability یا تغییرناپذیری دادههاست؛ مفهومی که کمک میکند پس از مقداردهی اولیه، وضعیت یک شیء بهصورت ناخواسته تغییر نکند. با بررسی Setterهای Init-only یاد میگیرید چگونه امکان مقداردهی به Propertyها را هنگام ساخت شیء فراهم کنید، بدون اینکه همان Propertyها در ادامه به روش معمول قابل تغییر باشند. این قابلیت در طراحی مدلهایی که باید وضعیت مشخص و قابل پیشبینی داشته باشند، کاربرد دارد.
بخش مربوط به Recordها، تعریف این نوع داده و رفتار اعضای داخلی آن را بررسی میکند. با شناخت متد ToString و نحوه مقایسه Recordها، متوجه میشوید این ساختار چگونه نمایش اطلاعات و مقایسه بر اساس مقدار را سادهتر میکند. همچنین قابلیت Cloning و اضافه کردن بدنه به Recordها مطرح میشود تا بتوانید رفتارهای موردنیاز خود را در کنار دادههای تعریفشده قرار دهید. این مباحث برای توسعهدهندگانی مناسب است که میخواهند هنگام طراحی مدلهای داده، تفاوت میان هویت یک شیء و مقادیر ذخیرهشده در آن را بهتر درک کنند.
Pattern Matching و Top-level Statements در C# 9 چه کاربردی دارند؟
بخش دیگری از آموزش به قابلیتهای جدید Pattern Matching اختصاص دارد؛ روشی برای بررسی ساختار یا مقدار دادهها و انتخاب مسیر مناسب اجرای کد بر اساس الگوهای تعریفشده. با آشنایی با Patternهای جدید در C# 9 میتوانید بعضی از شرطهای پیچیده را خواناتر بنویسید و منطق تصمیمگیری را به شکل روشنتری بیان کنید. این قابلیت هنگام بررسی چند شرط مرتبط یا ارزیابی مقادیر مختلف در برنامه کاربرد دارد. تمرکز بر تغییرات این نسخه کمک میکند کدهای جدیدتر را بهتر بخوانید و هنگام بازنویسی منطق شرطی، از امکانات خود زبان استفاده کنید.
در ادامه، قابلیتهای جدید Functionها و Top-level Statements بررسی میشوند. Top-level Statements امکان نوشتن دستورهای اجرایی برنامه را بدون نیاز به تعریف صریح ساختار معمول کلاس و متد Main فراهم میکند؛ موضوعی که برای نمونههای کوچک، ابزارهای خط فرمان و شروع سریع یک برنامه کاربرد دارد. آشنایی با این تغییر در کنار قابلیتهای مرتبط با Functionها، تصویر کاملتری از بهبودهای نحوی C# 9 ارائه میدهد. به این ترتیب، میتوانید هنگام کار با کدهای مبتنی بر این نسخه، ساختارهای جدید را تشخیص دهید و از آنها برای سادهتر کردن بخشهای مناسب برنامه استفاده کنید.
سرفصل مطالب آموزش ویدیویی قابلیت های جدید در سی شارپ 9
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: بررسی رکوردها و Property ها
- مقدمه
- بررسی اپلیکیشن این دوره آموزشی
- اهمیت غیر قابل تغییر بودن و یا Immutability
- بررسی Setter های Init-only و نصب کردن Type با استفاده کلمه کلیدی New
- معرفی کردن رکوردها
- بررسی کردن اعضای درونی رکوردها و متد ToString
- بررسی کردن تساوی در رکوردها
- بررسی کردن Cloning در رکوردها
- اضافه کردن یک بدنه در رکوردها
- جمع بندی
فصل سوم: بررسی الگوها و Expression ها
- مقدمه
- بررسی Pattern Matching
- معرفی کردن Pattern های جدید
- معرفی کردن قابلیت های جدید Function ها
- معرفی کردن Top-level Statement ها
- جمع بندی







