آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 16 : Box و Unbox

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

Boxing

همانطور که در قسمت های قبلی گفتیم، سی شارپ یک زبان سئ گرا است، یعنی ما می توانیم بوسیله کلاس ها شئ های مورد نظر خود را ایجاد کنیم. بوسیله کلاس ها نوع های داده ارجاعی یا Reference Type ایجاد می شوند. همینطور با struct ها که وظیفه ایجاد Value Type ها را دارند آشنا شدیم. اما کلیه این نوع های داده از نوع داده object ارث بری می کنند، یعنی فرزند نوع داده object هستند که به صورت پیش فرض در کتابخانه دات نت تعریف شده اند. اگر توضیحی بخواهیم برای عملیات Boxing ارائه دهیم، عملیات تبدیل یک Value Type به نوع داده object را boxing می گویند. مثال:

int number = 12;
object boxed = number;

در کد بالا، ابتدا یک متغیر از نوع int تعریف کردیم و سپس این متغیر را در متغیر دیگری با نام boxed و از نوع object قرار دادیم. به این عملیات boxing گفته می شود. اگر بخواهیم نگاه ریز تری به این پروسه داشته باشیم، عملیات boxing مقدار یک value type که در حافظه stack دخیره شده را داخل یک object و در حافظه heap نگهداری می کند. عملیات boxing را می توان به صورت implicit که در بالا مثال زدیم یا explicit انجام داد:

int number = 12;
object boxed = (object)number;

Unboxing

عملیات Unboxing، دقیقاً عکس عملیات boxing است، یعنی ما یک متغیر از نوع object را به Value Type تبدیل کنیم:

object boxed = 12;
int unboxedNumber = (int)boxed;

در کد بالا، ابتدا عدد 12 داخل متغیر boxed از نوع object قرار گرفته و در خط بعدی عملیات unboxing انجام می شود، یعنی عدد 12 که از نوع int است و در متغیری از نوع object و در حافظه heap ذخیره شده، به صورت explicit تبدیل به نوع int شده و در متغیری از همین نوع قرار داده می شود. به این نکته دقت کنید که عملیات boxing و unboxing بر روی performance برنامه تاثیر می گذارد و بهتر است تا حد امکان از انجام این گونه تبدیل ها در برنامه خودداری کرد. در قسمت بعدی آموزش، با مبحث Generic آشنا خواهیم شد. ITPRO باشید

نویسنده : حسین احمدی
منبع : جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#آموزش_زبان_سی_شارپ #دوره_برنامه_نویسی #آموزش_برنامه_نویسی_شئ_گرا #boxing_و_unboxing_در_سی_شارپ #آموزش_برنامه_نویسی
عنوان
1 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 1 : مقدمه رایگان
2 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 2 : کلاس، اشیاء رایگان
3 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 3 : فیلد و رفتار رایگان
4 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 4 : Property ها رایگان
5 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 5 : ایجاد اشیاء رایگان
6 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 6 : وراثت رایگان
7 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 7 : Polymorphism رایگان
8 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 8 : abstract و sealed رایگان
9 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 9:سازنده در وراثت رایگان
10 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 10 : متد Extension رایگان
11 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 11: Value ها رایگان
12 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 12 : Interface رایگان
13 آموزش برنامه نویسی شی گرا در (#C) قسمت 13: Dependency Injection رایگان
14 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 14 : انواع Cast ها رایگان
15 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 15 : Operator Overloading رایگان
16 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 16 : Box و Unbox رایگان
17 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 17 : Generics رایگان
18 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 18 : List و Dictionary رایگان
19 آموزش برنامه نویسی شی گرا در سی شارپ (#C) قسمت 19 : مدیریت خطاها رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

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