آشنایی با امکانات و متدهای جدید در #C نسخه 6.0

نسخه جدید #C که تغییرات مفید و پرکاربردی نسبت به نسخه قبلی خود داشته ، برنامه نویسی را از نظر کیفیت بهبود چشمگیری بخشیده است ، در این مقاله قصد داریم به چند مورد از این تغییرات اشاره کنیم .

آشنایی با امکانات و متدهای  جدید در #C نسخه 6.0

این تغیرات شامل :

1 - خاصیت Auto-property

2 - نام گذاری عبارات (name of expressions)

3 - عملگر شرطی Null

4 - فیلتر Exception

5 - ایجاد تاخیر در try, catch

6 - استفاده از فضای نام Static

خاصیت Auto-propert

به عنوان یک برنامه نویس ما با خاصیت auto-properties هر روز رویرو میشویم .این امکان جدید(auto-property) را معرفی میکنیم . خاصیت سازنده ای که حذف شده بود را اجرا میکند .این امکان جدید ، مقادیر را در هنگام تعریف  خاصیت auto-property اجرا میکند .به مثال زیر توجه فرمایید :

    public class Employee  
    {  
       public string FirstName { get; set; } = "John";  
       public string LastName { get; set; } = "Snow";  
    }  

این امکان همچنین میتواند با خاصیت read-only استفاده شود (خواصی که فقط شامل متد get میباشند)

    public string FirstName { get; } = "John";  

نام گذاری عبارت (name of expression) :

در این قسمت با حالات مختلفی روبرو میشویم که در هر کدام باید یک رشته با نام مربوط به عنصر برنامه را ایجاد کنیم ،به عنوان مثال ، هنگامی که ArgumentNullException اجرا میشود ، ما به یک نام با پارامتر بی اعتبار احتیاج داریم ، یا اگر رویداد PropertyChanged را بخواهیم تغییر نام دهیم ، رشته ایجاد شده مستعد خطا میباشد و در زمان کامپایل می تواند شامل غلط املای باشد ، با استفاده از فضای نام expression ، کامپایلر نام ارجاع داده شده را بررسی می کند .

    if (obj == null) throw new ArgumentNullException(nameof(obj));  

عملگر شرطی Null

این عملگر ، مقادیر Null  را قبل بکار گیری ، یررسی میکند ، این عمل به شما اجازه می دهد ، به مقادیری دسترسی داشته باشید که Null هستند

int? _count = employees?.Count(); // returns null if employees are null else count 

عملگر شرطی Null با عملگر Null-coalescing برای تخصیص دادن برخی مقادیر پیش فرض در طورت بازگرداندن مقدار Null می تواند استفاده شود .

    int _count = employees?.Count() ?? 0; //returns 0 if the employees are null  

فیلتر Exception

این امکان از قبل در #C و VB.Net آماده استفاده بود .استفاده از یک فیلتر Exception میتوان مشخص شود و اگر شرط در قسمت catch قرار می گیرد .در این مورد شرط مقدار true را فقط ارزیابی میکند و در صورت صحت آن به قسمت بعدی که catch  می باشد می رود .مانند مثال زیر :

try  
{  
  
}  
catch(exception ex) if(ex.Message == “Test”)  
{  
   // this will execute only if the if statement evaluates to true  
} 

ایجاد تاخیر درمتد Try/Catch

با استفاده از #C نسخه 6.0 یک امکان جدید برای مدیریت exception افزوده شده است .اکنون ما میتوانیم از Await در متد آخر catch استفاده کنیم .

    try  
    {  
      
    }  
    catch(Exception ex)  
    {  
       await LogAsync(ex);  
    }  

استفاده از فضای نام Static

در آخرین نسخه #C نوعی دیگر از عبارتی که معرفی شده بود، استفاده میشود و برای دسترسی مستقیم  اعضا استفاده میشود .

    using System.Console;  
    namespace MyConsoleApp  
    {  
       class Sample  
       {  
          static void Main(string[] args)  
          {   
             WriteLine(“Hello!!!”);  
          }  
       }  
    }