ده ویژگی برتر در سی شارپ 6

در این پست از وبسایت پرووید در رابطه با ده ویژگی برتر در سی شارپ 6 صحبت خواهیم کرد. سی شارپ یکی از بهترین و محبوب ترین زبان های برنامه نویسی شی گرا است.سی شارپ یک زبان برنامه نویسی ساده و در عین حال قدرتمند و شی گرا می باشد. در رابطه با مفهوم شی گرایی در بسته ی آموزش ویدئویی شی گرایی در سی شارپ از وبسایت پرووید بیشتر صحبت کرده ایم. با استفاده از زبان سی شارپ می‌توان گستره وسیعی از نرم افزار ها را از جمله نرم افزارهای تحت وب، نرم افزار های تحت ویندوز، نرم افزار های کنسولی و حتی نرم افزارهای دستگاه‌ های موبایل را با استفاده از ویژوال استودیو ساخت. ضمناً توصیه می کنیم که از آموزش متنی توسعه نرم افزار با سی شارپ نیز دیدن کنید.استفاده از یک کامپلیر جدید به نام Roslynاولین ویژگی جدید سی شارپ 6 استفاده از یک کامپلیر جدید به نام Roslyn است. این یک کامپایلر Open Source است که داری قابلیت گسترش (Extensibility) است. به علاوه، ویژگی دیگر کامپلیر Roslyn در سی شارپ، طراحی آن به عنوان یک سرویس است. در واقع Compiler as a Service متدلوژی است که با استفاده از آن کامپایلر Roslyn پیاده سازی شده است.جالب است بدانید که کامپایلر Roslyn در زبان ویژوال بیسیک نیز مورد استفاده قرار می گیرد. بنابراین، هم سی شارپ و هم ویژوال بیسیک دست خوش تغییر در کامپایلر خود شده اند.الحاق رشته ها (String Interpolation)به عنوان دومین ویژگی جدید از سی شارپ ورژن 6 باید از الحاق رشته ها (String Interpolation) صحبت کنیم. در ورژن های قبلی از سی شارپ، با استفاده از متد String.Format و یک سری Placeholder می توانستیم رشته ها را الحاق کنیم.به کد زیر دقت کنید.1 static void Main(string[] args)2 {3 string name = "Robert";4 string car = "Audi";5 WriteLine("{0}'s favourite car is {1}!", name, car);6 }در نسخه ی ششم از سی شارپ می توانیم تنها با ذکر نام متغیرها آنها را الحاق کنیم. کد زیر این موضوع را نشان می دهد:1 static void Main(string[] args)2 {3 string name = "Robert";4 string car = "Audi";5 WriteLine("\{name}'s favourite car is {car}!");6 }بدون شک استفاده از نام متغیر هم قابلیت خوانایی (Readability) کد را بالا می برد و هم زیبا تر است. در بسته ی آموزش ویدئویی کدنویسی تمیز: نوشتن کد برای انسان ها در رابطه با این مفاهیم بیشتر صحبت کرده ایم.نام کلاس های استاتیک در Usingبه عنوان سومین ویژگی جدید از سی شارپ ورژن 6 قصد داریم در رابطه با استفاده از نام کلاس های استاتیک در Using ها یاد کنیم. در ورژن ششم از سی شارپ می توانید از نام کلاس های استاتیک شبیه Namespace ها در کنار جملات Using استفاده کنید. به کد زیر دقت کنید:1 using System;2 // A static class inclusion3 using System.Console;4 namespace CSharp6Demo5 {6 class Program7 {8 static void Main(string[] args)9 {10 WriteLine("Console. is not required11 as it is included in the usings!");12 }13 }14 }این موضوع باعث می شود که کد نویسی شما تمیزتر و حجم آن به مراتب کمتر شود. ضمناً آموزش متنی توسعه نرم افزار با سی شارپ می تواند به عنوان یک راهنمای بسیار کامل و کاربردی برای یادگیری برنامه نویسی با زبان سی شارپ به شما کمک می کند. موضوعات مطرح شده در این سری آموزشی بسیار کاربردی و با اهمیت هستند. این سری آموزشی به صورت رایگان بر روی سایت پرووید منتشر شده است.قابلیت فیلتر کردن استثناها (Exception Filtering)به عنوان چهارمین ویژگی جدید سی شارپ 6 قصد داریم از قابلیت فیلتر کردن استثناها (Exception Filtering) نام ببریم. در این رابطه توصیه می کنیم که از بسته ی آموزش ویدئویی Debugging در سی شارپ از وبسایت پرووید استفاده کنید.با استفاده از این قابلیت می توانید نوع استثنایی که قصد مدیریت آن را دارید در بلاک های Catch ذکر کرده و آنها را فیلتر کنید. به عنوان مثال، کد زیر قصد دارد تمامی استثناها به جز SqlException را هندل کند.به قسمت if در catch دقت کند:1 public async void Process()2 {3 try4 {5 DataProcessor processor = ne6 }7 // Catches and handles only non sql exceptions8 catch (Exception exception) if(exception.GetType()9 != typeof(SqlException))10 {11 ExceptionLogger logger = new ExceptionLogger();12 logger.HandleException(exception);13 }14 }امکان تعریف کردن پارامتر out یک متد در هنگام فراخوانی متدبه عنوان ششمین ویژگی جدید سی شارپ 6 قصد داریم به امکان تعریف کردن پارامتر out یک متد در هنگام فراخوانی متد صحبت کنیم. در ورژن های قبلی سی شارپ، هنگامی که قصد فراخوانی متدی را داشتید که پارامتر ورودی out دریافت می کرد، مجبور بودید قبل از فراخوانی متد، پارامتر out را تعریف کنید. در ورژن ششم از سی شارپ می توانید به راحتی در هنگام فراخوانی متد مربوطه، پارامتر out آن را نیز تعریف کنید.به کد زیر دقت کنید:1 public bool ConvertToIntegerAndCheckForGreaterThan102 (string value)3 {4 if (int.TryParse(value, out int convertedValue) & convertedValue > 5 10)6 {7 return true;8 }9 return false;10 }تابع سازنده ی اصلی (Primary Constructor)به عنوان هفتمین ویژگی جدید سی شارپ 6 قصد داریم به تابع سازنده ی اصلی (Primary Constructor) اشاره کنیم. تابع سازنده ی اصلی تابعی است که می تواند پارامترهای ورودی خود را در سطح تعریف کلاس دریافت کند.این تابع سازنده فقط در سطح کلاس تعریف می شود و در هنگام ساختن یک شی از کلاس فراخوانی می شود. کاربرد ویژه ی تابع سازنده ی اصلی در مقداردهی اولیه به پروپرتی ها می باشد. به کد زیر دقت کنید:1 // Primary constructor2 class Basket(string item, int price)3 {4 // Using primary constructor parameter values5 // to do auto property initialization.6 public string Item { get; } = item;7 public int Price { get; } = price;8 }قابلیت مقداردهی اولیه به پروپرتی های اتوماتیک (Auto-Property Initializer)به عنوان هشتمین ویژگی جدید سی شارپ 6 قصد داریم به قابلیت مقداردهی اولیه به پروپرتی های اتوماتیک (Auto-Property Initializer) اشاره کنیم. پروپرتی های اتوماتیک در ورژن های قبلی سی شارپ نیز موجود بودند. در واقع این پروپرتی ها نیازی به یک متغیر محلی (Back Field) ندارند. در بسته ی آموزش ویدئویی شی گرایی در سی شارپ و همچنین بسته ی آموزش ویدئویی سی شارپ دات نت در سی شارپ به این موضوع ها پرداخته ایم.و اما با این قابلیت جدید سی شارپ 6، برنامه نویس می تواند این پروپرتی ها را مقداردهی اولیه کند. به کد زیر دقت کنید:1 class PeopleManager2 {3 public List<Roles> { get; } =4 new List<string>() { "Employee", "Managerial"};5 }یک عملوند جدید در دستورات شرطیبه عنوان نهمین ویژگی جدید سی شارپ 6 قصد داریم به یک عملوند جدید در دستورات شرطی اشاره کنیم. در ورژن های قبلی سی شارپ، قبل از استفاده از یک شی و یا پروپرتی های آن باید حتماً Null نبودن آن را چک می کردیم تا با خطای Null Reference روبرو نشویم.به کد زیر دقت کنید:1 private void GetMiddleName(Employee employee)2 {3 string employeeMiddleName = "N/A";4 if (employee != null & employee.EmployeeProfile5 != null)6 employeeMiddleName =7 employee.EmployeeProfile.MiddleName;8 }در نسخه ی ششم از سی شارپ دستور بالا را می توان به راحتی با استفاده از عملوند ؟ به صورت زیر نوشت:1 private void GetMiddleName(Employee employee)2 {3 string employeeMiddleName =4 employee?.EmployeeProfile?.MiddleName ?? "N/A";5 }قابلیت نوشتن متدهای تک خطیبه عنوان دهمین ویژگی جدید سی شارپ 6 قصد داریم به قابلیت نوشتن متدهای تک خطی اشاره کنیم. در نسخه های قبلی سی شارپ برای نوشتن متدهای کوتاه یک خطی باید دقیقاً از الگوی نوشتن یک متد استفاده می کردیم که حاوی brace باز و بسته ({}) هستند.در نسخه ی ششم از سی شارپ، می توانیم متدهای کوتاه تک خطی را به صورت ساده و سریع به شکل زیر بنویسیم:1 class Employee2 {3 // Method with only the expression4 public static int5 CalculateMonthlyPay(int dailyWage)6 => dailyWage * 30;7 }