بایت لرن

آموزشهای برنامه نویسی ، امنیت و شبکه ،ترفند های کم یاب ، سورس کد ، طراحی وب ، اپلیکشن ، انجام پروژه های دانشجویی رایگان

تغییرات جدید در سی شارپ 6

تغییرات جدید در سی شارپ C# 6

در مقاله قبلی (آنچه که باید درباره زبان برنامه نویسی سی شارپ بدانید) با زبان محبوب سی شارپ آشنا شدیم.

حال در این مطلب قصد دارم خدمت برنامه نویسان عزیز تغییرات زبان برنامه نویسی #C رو که در نسخه 6 انجام شده معرفی کنم ، با ذکر مثال هم به صورت کد قدیم و هم به صورت کد جدید این مطلب رو ادامه خواهم داد. لازم به ذکر است بدانید که از نسخه 6 سی شارپ از نسل جدید کامپایلر های دات نت Roslyn  استفاده شده و سی شارپ 6 بر پایه این کامپایلر است.

تغییرات جدید در سی شارپ C# 6

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;} = "reza golzar";
}

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.LastN

String Interpolation

رشته ها یا String ها نیز در این نسخه با پیشرفت روبرو بودند و این قابلیت برای الحاق آنها کاربرد دارد و در ادامه مثالی دذر همین خصوص جهت آشنایی شما وجود دارد،ابتدا کد قدیمی را ببینید

string fullname = "Reza Golzar"
Console.Writeline("Name - " + fullname);

کد جدید 6 #c

string fullname = "Reza Golzar"
Console.Writeline("Name - \{fullname}" );

با کمی دقت میتوان دریافت که در این قابلیت نام یا همان اسم متغیر را پس از اس علامت بک اسلش \ داخل آکولاد {} نوشت.

      پیشنهاد ما به شما!

            برنامه نویسی Net. چیست و چه کاربردی دارد؟

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("Reza Golzar");
        }
    }

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>()
{
    { "Byte", "Learn" },
    { "Programing", "PRO" },
    { "professional", "ByteLearn" }
};

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

Dictionary<string, string> eplTeams = new Dictionary<string, string>()
{
    ["Bytelearn"]  =  "Byte",
    ["Programing"] =  "PRO",
    ["professional"] = "ByteLearn"
};

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 باشد، آنگاه مقدار سمت راست را برمی‌گرداند. در غیر این صورت همان مقدار سمت چپ برگشت داده می‌شود.
در ادامه سایت های زیر جهت اطلاعات بیشتر خدمتتان معرفی میگردد.


با تشکر از شما، دوستان میتوانید با عضویت در کانال تلگرامی ما جدیدترین مطالب و اخبار رو دریافت کنید .

آدرس کانال :

bytelearn@


نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
تمامی حقوق مطالب این سایت متعلق به گردانندگان آن است

Valid HTML 4.01!