امکانات جدید در 6.0 #C

یکشنبه 23 فروردین 1394

در این مقاله با برخی از امکانات #C ورژن 6.0 آشنا می شویم .

در نسخه های قبلی #C  نیاز به افزودن statement خاصی بود , مانند system , پس از اضافه کردن statement مخصوص  ما  باید کد زیر را اضافه کنیم(به عنوان مثال برای نمایش یک متنی خاص) :


    Console.WriteLine("Hello Abrar!");  

در #c نسخه 6.0 همچنین می توانیم statement و refrence متد مخصوص WriteLine را اضافه کنیم :

using System.Console;  
namespace Console1  
{  
    class Program  
    {  
        static void Main(string[] args  
        {  
            //Sample One    
            WriteLine("Hello Word!");  
        }  
        }  
    }

در گذشته باید prooperty با امکان get و set ایجاد کنیم , سپس constructor خود را ایجاد کنیم .مانند کد زیر :


    public class Customer  
    {  
        public Customer()  
        {  
            customerID = Guid.NewGuid();  
        }  
        public Guid customerID   
        {  
            get;  
            set;  
        }  
    }  

اما اکنون کد بالا را به یک خط کاهش داده , مانند کد زیر :


    public class Customer  
    {  
       public Guid customerID { get; set; } = Guid.NewGuid();  
    }  

مشاهده کد زیر برای بسیاری از برنامه نویسان سردرگم کننده و پیچیده می باشد :

Dictionary<string, string> customerNames = new Dictionary<string, string>()  
{  
   { "Abrar Ahmad", ".net" },  
   { "Yogesh", "Java" },  
   { "Ganesh", "SQL" }  
}; 

اما با ساده کردن کد بالا به شیوه ای جدید برنامه نویسان را در درک راحت تر مفاهیم کدها یاری می رسانیم :


    public Dictionary<string, string> customerNames = new Dictionary<string, string>()  
    {  
       ["Abrar Ahmad "] = ". net ",  
       ["Yogesh"] = "Java",  
       ["Ganesh "] = " SQL "  
    };  

تا قبل از این Exception Filter تنها در Visual Basic امکان پذیر بود , اما اکنون در #C نیز این امکان نیز اضافه شده است و به ما این اجازه را میدهد که از دستورات شرطی در دستورات Try&catch استفاده کنیم :


    public static async void DownloadAsync()   
    {  
        try  
        {  
            throw new Exception("Error");  
        } catch   
        {  
            await Task.Delay(2000);  
            WriteLine("Waiting 2 seconds");  
        }   
        finally   
        {  
            await Task.Delay(2000);  
            WriteLine("Waiting 2 seconds");  
        }  
    }  

برخی برنامه نویسان احتیاج دارند از بانک اطلاعاتی یک log  استفاده کنند بدون بستن thread جاری.در مثال زیر می توانید از این امکان نیز استفاده کنید :


    public static async void DownloadAsync()  
    {  
        try   
        {  
            throw new Exception("Error");  
        }   
        catch   
        {  
            await Task.Delay(2000);  
            WriteLine("Waiting 2 seconds");  
        }  
        finally  
        {  
            await Task.Delay(2000);  
            WriteLine("Waiting 2 seconds");  
        }  
    }  

همچنین در برخی قسمتها باید نام کلاس را بازیابی کنیم. مانند کد زیر :


    public static void DoSomething(string name)  
    {  
       if (name != null) throw new Exception("name");  
    }  

مشکل اصلی در کد نویسی بالا این است که شما را مجبور می کند که یک رشته برای تخصیص نام کلاس وارد نمایید .اما در #C نسخه 6.0 این محدودیت برای برنامه نویسان حذف گردید,مانند مثال زیر :


    public static void DoSomething(string name)  
    {  
       if (name != null) throw new Exception(nameof(name));  
    }  

در نسخه های قبلی به عنوان مثال برای دریافت نام و نام خانوادگی باید به ترتیب زیر عمل مبکردیم :


    string firstName = "Iman";  
    string lastName = "Madaeny";  
    WriteLine("Name : " + firstName + " " + lastName);  
    WriteLine(string.Format("Name : {0} {1}", firstName, lastName));  

اما اکنون در نسخه جدید می توانیم به صورت زیر بنویسیم :


    string firstName = "Iman";  
    string lastName = "Madaeny";  
    WriteLine("Name : \{firstName} \{lastName}");  

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 1k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید