امکانات جدید در 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}");
- C#.net
- 1k بازدید
- 3 تشکر