ویژگی های جدید در C# 6.0 بخش دوم

C# 6.0

سلام. امروز با قسمت دوم از مقاله ای که دیروز براتون قرار دادم در خدمتون هستم. در این مقاله به ادامه ی ویژگی های جدید در C# 6.0 ویژوال استودیوی ۲۰۱۵خواهیم پرداخت. پیش از خواندن این مقاله پیشنهاد میکنم حتما بخش اول آن را مطالعه کنید :

بخش اول

در این مقاله به ساختار ارسال Constructor ها و اینکه چقدر اکنون ساخت یک کلاس Custom exception توسط میانبرها در ویژوال استودیوی ۲۰۱۵ آسان تر شده است ، میپردازیم و همچنین نگاهی خواهیم داشت به ویژگی های زیاد C# 6.0 که در مقاله قبلی نیز توضیح دادم.

لیستی از ویژگی های جدید در C# 6.0

۱ – ساختار ارسال Constructor

۲ – ایجاد یک کلاس Custom exceptions

ساختار ارسال Constructor

ساختار ارسال Constructor در C# 6.0 اکنون ممکن است ، میتوانیم ارسال Constructor را به صورت ساختار صریح در ویژوال استودیوی ۲۰۱۵ ایجاد کنیم. بیاید نگاهی داشته باشیم به خاصیت ساختار ها در C# 5.0 و پیش از آن تا ساختار را به خوبی درک کنیم.

مروری بر ساختار ها

ساختار ها دارای خصوصیات زیر هستند :

ساختار ها نوع مقادیری هستند که در آن کلاس ها از نوع reference هستند.

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

ساختار ها میتوانند Constructor ها را مشخص کنند اما تا C# 5.0 نیاز به دریافت پارامتر داشتند.

یک ساختار نمیتواند از ساختار یا کلاس دیگری ارث بری کند و نمیتواند مرجع یک کلاس باشد. تمام ساختار ها مستقیما از System.ValueType ارث بری میکنند ، که آن هم از System.Object ارث بری میکند.

یک ساختار میتواند رابط ها را اجرا کند.

میتوانیم از ساختار ها برای کد های کوتاه استفاده کنیم ، یا به بیانی دیگر میتوانیم بگوییم که ما هرجایی که کلاسی برای تعداد کمی Property یا متد داشته باشیم ، میتوانیم یک ساختار تعریف کنیم تا دیگر نیازی به استفاده از حافظه در heap نیست و میتوانیم از حافظه ی Stack با استفاده از ساختار و اشیای ساختار میتوانند ساختار های پیش فرض را فراخوانی کنند. این به این معناست که با ارسال Constructor دیگر نیازی به استفاده از کلمه کلیدی جدیدی نیست زیرا تا C# 5.0 نمیتوانستیم ارسال Constructor با ساختار داشته باشیم همانند Int32 که یک ساختار است و میتوانیم از آن بدون استفاده از کلمه کلیدی جدیدی استفاده کنیم اما در زمینه ی کلاس باید از یک کلمه کلیدی جدید استفاده کنیم تا بتوانیم یک بلوک حافظه در heap ایجاد کنیم و در زمان ایجاد یکی جدید باید Constructor کلاس را بدون پارامتر یا یک پارامتر صریح صدا بزنیم.

ساختار ها یک Constructor پیش فرض هستند (ارسال Constructor) و نیازی نیست که آن را با یک کلمه کلیدی جدید صدا بزنیم زیرا ساختار ها از نوع مقادیر هستند پس میتوانیم Constructor صریح آن را صدا بزنیم. بیایید مثالی در C# 5.0 داشته باشیم.

C# 6.0

من فقط یک ساختار از نوع دانش آموزان برای ذخیره کردن موارد و همچنین سعی در نوشتن یک پیش فرض با ارسال پارامتر اما در زمان کامپایل خطایی تولید میکند.

C# 6.0

ساختار ها نمیتوانند شامل پارامتر های صریح باشند زیرا اشیای یک نوع ساختار یک Value Type ذخیره شده در حافظه ی Stack هستند. به همین دلیل نیازی به فراخوانی یک ارسال Constructor با یک کلمه ی کلیدی صریح جدید نیست. پس بیایید ببینیم ، زمانی که من Constructor با پارامتر مینویسم دوباره با خطا مواجه میشوم. بیایید ببینیم :

C# 6.0

C# 6.0

در این نمونه کد که در بالا دیدید همچنان دو خطا وجود دارد زیرا مقدار پیش فرض را برای تمام اعضای داده تعیین نکرده ایم. آنها در ساختار من اعلام شده اند پس واجب است که همه ی اعضای داده را در ساختار Constructor تعیین کنیم و سپس سورس من با موفقیت ساخته خواهد شد.

C# 6.0

کد

public struct Stu   
{   
    public Stu(int Rollno,string Name)   
    {   
        this.rollno = Rollno;   
        this.name = Name;   
    }   
    int rollno;   
    public int Rollno   
    {   
        get { return rollno; }   
        set { rollno = value; }   
    }   
    string name;   
    public string Name   
    {   
        get { return name; }   
        set { name = value; }   
    }   
} 

C# 6.0

خروجی را ببینید. زمانی که ما در حال استفاده از یک Property توسط یک شئ هستیم بدون تعیین شئ با کلمات کلیدی جدید ما ارسال Constructor را صدا میزنیم.

خروجی

C# 6.0

حال نیاز به تعیین شئ به یک کلمه کلیدی جدید است تا ۲ Constructor را نشان دهد اما یک ساختار تنها یک ۱ صریح دارد و دیگری به وسیله ی کامپایلر به صورت پیش فرض ساخته میشود. عکس زیر را ببینید :

C# 6.0

پس میتوانید هرکدام از آنها را استفاده کنید ، اگر ما اشیا را تعیین نکرده باشیم ، ارسال Constructor به طور صریح فراخوانی میشود.

در C# 6.0

در C# 6.0 همراه با ویژوال استودیو ۲۰۱۵ ما قادر به ساخت یک ارسال Constructor در ساختار نیز هستیم. در نسخه های قبلی C# نمیتوانستیم ارسال Constructor ایجاد کنیم پس همه ی اعضای داده از نوع مقادیر باید توسط ارسال Constructor ایجاد شده توسط کامپایلر با مقدار های پیش فرض تعیین شوند. به عنوان مثال اگر ما متغیری از نوع Int32 داشته باشیم آنگاه به آن به صورت پیش فرض مقدار ۰ داده میشود اما اکنون شما میتوانید هرمقداری را به عنوان مقدار پیش فرض به اعضای داده ی ساختار خود همانند یک کلاس بدهید اما همچنان شرایطی وجود دارد مانند اینکه اگر بخواهیم یک ارسال Constructor در ساختارمان بسازیم ، پس همه ی اعضا باید در آن Constructor تعیین شوند اما آن شرایط برای نوع کلاس مناسب نیست پس اکنون از رفتار جدید ساختار ها با ارسال Constructor ها لذت ببرید. بیاید با هم مثالی ببینیم :

C# 6.0

کد با موفقیت ساخته میشود زیرا ما تمام اعضای داده ها را تعیین کردیم اما اگر ما فقط یکی را تعیین کنیم و یکی یا تعداد بیشتری برای تعیین کردن باقی بماند ، آنگاه خطایی همانند زیر تولید خواهد کرد :

C# 6.0

پس همه ی اعضای داده در پیش فرض یا ارسال Constructor را تعیین کنید و آن را بدون کلمه ی کلیدی جدید از آن استفاده کنید.

ساخت کلاس Custom exceptions

ساخت یک کلاس Custom Exception یکی از ویژگی های جدید ویژوال استودیوی ۲۰۱۵ است. در ویژوال استودیوی ۲۰۱۲ یا هر ویژوال استودیوی دیگری اگر نیاز به کنترل استثنا توسط یک بلوک catch توسط یک کلاس Custom Exception باشد ، در ابتدا نیاز به نوشتن یک فایل کلاس و سپس ارث بری از کلاس System.Exception میباشد و برای استفاده از خاصیت Message و برای لغو و تعیین پیام Custom Exception همانند زیر عمل کنید :

C# 6.0

و میتوانیم از آن کلاس به عنوان یک کلاس استثنا توسط کلمه ی کلیدی throw استفاده کنیم و آن را مستقیما در یک بلوک Catch در یک شئ نوع System.Exception کنترل میشود.

C# 6.0

اما در ویژوال استودیوی ۲۰۱۵ ساخت یک کلاس Custom Exception بسیار آسان است. نیازی به ساخت آن کلاس به صورت دستی نیست ، باید از کلمه ی کلیدی throw استفاده کنیم و یک شئ توسط کلمه ی کلیدی جدید بسازیم.

C# 6.0

زمانی که کلیک میکنید تمام گزینه های موجود را به شما نشان خواهد داد.

C# 6.0

و همچنین پیش نمایشی از کد که میتواند توسط ویژوال استودیو نوشته شود را نشان میدهد.

C# 6.0

اکنون تنها بر روی دکمه ی Enter کلیک کنید و آن یک کلاس Serializable Exception در یک فایل جدید همانند زیر ایجاد خواهد کرد :

C# 6.0

حال لغو هر Property در کلاس System.Exception و از آنها به عنوان یک کلاس استثنائات معمولی استفاده کنید.

امیدوارم از این مقاله لذت برده باشید.

ممنون از وقتی که برای مطالعه ی آن گذاشتید.

  • پسورد: www.mspsoft.com
داریوش فرخی

داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.