آموزش برنامه نویسی

آموزش سی شارپ

آموزش سی شارپ

پربیننده ترین مطالب
پیوندهای روزانه

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


منبع:programming.itpro.ir
  • متین تیماسی ، مبین خسروی و عمران جودکی

نظرات  (۰)

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