درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
دوره های مرتبط
دوره آموزشی ساخت ربات تلگرام
مدرس: taghandiki
این دوره را در 8 قسط خریداری کنید
ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
مدرس: مهدی عادلی
این دوره را در 2 قسط خریداری کنید
دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
مدرس: حسین احمدی
این دوره را در 17 قسط خریداری کنید
دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
مدرس: taghandiki
این دوره را در 20 قسط خریداری کنید
دوره آموزشی برنامه نویسی حرفه ای پایتون به زبان ساده
مدرس: حسین احمدی
این دوره را در 23 قسط خریداری کنید
دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
مدرس: مهدی عادلی
این دوره را در 27 قسط خریداری کنید
دوره آموزشی طراحی رابط کاربری با JavaFX
مدرس: hharddy
این دوره را در 13 قسط خریداری کنید
دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
مدرس: dr-iman
این دوره را در 13 قسط خریداری کنید
دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
مدرس: مهدی عادلی
این دوره را در 17 قسط خریداری کنید
دوره آموزشی Exploit نویسی به زبان Perl
مدرس: dr-iman
این دوره را در 7 قسط خریداری کنید

تغییرات جدید در سی شارپ C#.NET 6.0

0 نظرات
68 بازدیدها
قابلیت های جدید زبان سی شارپ

در این مطلب قصد دارم خدمت برنامه نویسان عزیز تغییرات زبان برنامه نویسی سی شارپ رو که در نسخه 6 انجام شده معرفی کنم و این تغییرات در 8 آیتم طبقه بندی شده که در ادامه با ذکر مثال هم به صورت کد قدیم و هم به صورت کد جدید این مطلب رو ادامه خواهم داد. اگر یادتان باشد قبلاً در انجمن نسل جدید کامپایلر های دات نت Roslyn رو معرفی کرده بودم و باید بدانید نسخه ششم از سی شارپ بر پایه این کامپایلر است برای اطلاعات بیشتر لینک فوق را مشاهده کنید.
قابلیت های جدید در زبان سی شارپ

ویژگی های سی شارپ جدید


Auto Property Initializer


اگر خاطرتان باشد قبلاً زمانی که یک property معرفی میکردیم باید در سازنده کلاس به آن را مقدار دهی میکردیم ولی در نسخه جدید میتوان زمان تعریف یک Property به آن یک مقدار اولیه تخصیص داد در پایین نمونه کد قبلی را میتوان دید
public class Employee
{
    public Guid EmpId {get;set;}
    public Employee()
    {
        EmpId = Guid.NewGuid();
    }
}
و در ادامه نمونه کد جدید(C# 6.0) رو میتونید ببینید
public class Employee
{
    public Guid EmpId {get;set;} = Guid.NewGuid();

    //Works with read only property also
    public string FullName{get;} = "Farhad Khanlari";
}

Expression-bodied Members


اگر شما یک Method یا یک Property دارید که آن متد یا پروپرتی دارای فقط یک خط دستور باشد می‌توانید به جای علامت {} ازبزرگتر مساوی => استفاده کنید ، کد نسخه‌ قبلی Method را ببینید:
public void PrineName()
{
    Console.Writeline(emp.FullName);
}
و در ادامه کد نسخه‌ قبلی Property را با هم ببینیم:
public string FullName { get {return emp.FirstName + em.LastName; } }
و برای قابلیت Expression-bodied Members در کد جدید ورژن 6 که مخصوص Method هست رو با هم ببینیم:
public void PrineName() => Console.Writeline(emp.FullName);
مثالی از کد جدید(C# 6.0) نمونه خاصیت Property
public string FullName => emp.FirstName + emp.LastName;

String Interpolation


رشته ها یا String ها نیز در این نسخه با پیشرفت روبرو بودند و این قابلیت برای الحاق آنها کاربرد دارد و در ادامه مثالی دذر همین خصوص جهت آشنایی شما وجود دارد،ابتدا کد قدیمی را ببینید
string fullname = "Farhad Khanlari"
Console.Writeline("Name - " + fullname);
کد جدید 6 #c
string fullname = "Farhad Khanlari"
Console.Writeline("Name - \{fullname}" );
با کمی دقت میتوان دریافت که در این قابلیت نام یا همان اسم متغیر را پس از اس علامت بک اسلش \ داخل آکولاد {} نوشت.

Using Static Class import


در نسخه C# 6.0 قابلیت دیگری اضافه شده که شما برنامه نویسان عزیز میتوانید کلاس‌هایی از نوع static را در لیست using ها قرار دهید که البته این کار در نسخه های قدیمی تر اصلاً وجود نداشت ، مثلاً زمانی که شما میخواستید WriteLine را بنویسید حتماً باید Console را در قبل این دستور به کار میبردید و فقط میتوانستید System را در Using ها استفاده کنید و کد زیر مثالی در همین خصوص است.
using System.Console;

  class Program
    {
        static void Main(string[] args)
        {
            //Using WriteLine directly instead of 
            // Console.WriteLine
            WriteLine("Farhad Khanlari with itpro");
        }
    }

Exception Filters


اگر میخواهید برنامه ای که مینویسید حرفه ای باشد باید از دستورات Catch بهره بگیرید تا بتوانید برنامه ای خوب و کاربر پسند داشته باشید و برنامه شما به هر دلیلی با خطا متوقف نشود Exception یا استثنائات در هر برنامه ای وجود دارد ولی در این نسخه میتوانید این قابلیت را فیلتر کنید مثلاً اگر فلان شرط برقرار بود دستورات Catch اجرا گردد
{
    throw new MyException { Severity = 3 };
}
catch (MyException ex) if (ex.Severity == 2)
{
    Console.WriteLine("Will not execute");
}
catch (MyException ex) if (ex.Severity == 3)
{
    Console.WriteLine("Will be executed");
}

Dictionary Initializer


در نسخه جدید مقداردهی به ساختمان‌ داده‌ ای که از نوع Dictionary هست ساده تر و بهتر صورت می پذیرد.
Dictionary<string, string> eplTeams = new Dictionary<string, string>()
{
    { "ITPRO", "IT" },
    { "Programing", "PRO" },
    { "professional", "ITPRO" }
};

و در کد زیر کد C# 6.0 را برای این قابلیت خواهید دید

Dictionary<string, string> eplTeams = new Dictionary<string, string>()
{
    ["ITPRO]  =  "IT",
    ["Programing"] =  "PRO",
    ["professional"] = "ITPRO"
};


Await in Catch block


در نسخه های قبلی نیز با استفاده از await در بلوک catch خیلی کمک میکرد به برنامه نویس که در این نسخه با ذخیره LOG در فایل یا دیتا بیس با کمی تغییرات مواجه شده که در ادامه مثالی از آن را با هم خواهیم دید
try
{
    DoWork()
}
catch (Exception ex)
{
    await Log.WriteDatabase(ex);
}

Null Conditional Operator


حتماً شما نیز برنامه نویسی هستید که زیاد چک میکنید که آیا فلان فیلد خالی است یا خیر یا بررسی میکنید که کاربر باید آن فیلد را پر کند سپس به صفحه بعدی برود در این نسخه عملگر ? و ?? برای کوتاه شدن و خلاصه نویسی و راحتی کار اضافه شده است در ادامه ابتدا کد قدیمی و سپس کد نسخه جدید را مشاهده خواهید نمود.

if (employee != null && employee.ContactDetails != null)
{
    Console.WriteLine(employee.Name + "-" + employee.ContactDetails.Address);
}
کد جدید C# 6.0
Console.WriteLine(employee?.Name + "-" + employee?.ContactDetails?.Address?? " No Details");
اگر یادتان باشد ما میتوانستیم و "میتوانیم" از ؟ به صورت if های خلاصه شده و کوتاه به صورت inline استفاده کنیم که مشابه ان دستور را در اینجا خواهیم داشت ، دستور employee?.Name میگوید اگر خاصیت Name برابر با null نباشد مقدار آن را برگردان. چنانچه طرف چپ عملگر ?? برابر با null باشد، آنگاه مقدار سمت راست را برمی‌گرداند. در غیر این صورت همان مقدار سمت چپ برگشت داده می‌شود.
در ادامه سایت های زیر جهت اطلاعات بیشتر خدمتتان معرفی میگردد.

نویسنده : فرهاد خانلری
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد
برچسب ها
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
هیچ نظری ارسال نشده است

    برای ارسال نظر ابتدا به سایت وارد شوید

    arrow