امکانات جدید در 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
- 2k بازدید
- 3 تشکر