صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

تبدیل صریح Explicit Conversions and Casting

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

به شکل زیر دقت کنید که چگونه یک متغیر از نوع ushort  به متغیری از نوع byte  تبدیل می شود . مثلا اگر متغیر ما عدد 1365 از نوع ushort  باشد پس از تبدیل به نوع byte  بدلیل از دست دادن برخی بیتها به عدد 85 تغییر می کند .



Casting


همانطور که در تبدیل صریح گفتیم برای تغییر نوع یک متغیر باید به صراحت آن را ذکر کرد ، ما در این گونه تبدیل با علم به تغییرات انجام شده تبدیل مورد نظر را بصورتی که می خواهیم اعمال می کنیم . به تعبیری دیگر تبدیل با مسولیت ما انجام می شود حتی اگر باعث تغییر داده ها شود . برای اینکار باید از عبارت cast  یا همان

cast expression  استفاده کنیم .فرمت کلی آن به شکل زیر است .




 

Target type  بجای این عبارت و بین پرانتز شما باید نوع هدف را مشخص کنید ، یعنی داده شما به چه نوعی تغییر کند

 

source expression, همان متغیر شما است که دارای مقدار است و می خواهید آن را به نوع داده دیگری تغییر دهید .

 

پس وقتی شما از عبارت و فرمت بالا استفاده می کنید به صراحت اعلام می کنید که می خواهید داده های خود را (بر حسب نیاز خود حتی در صورت تغییر ) به نوع دیگری تبدیل کنید

شکل زیر نشان می دهد که چگونه یک متغیر ushort  به متغیری از نوع byte  تبدیل شده است ، اگر دقت کنید می بینید که در حالت اول عدد 10 در هر دو نوع گنجایش دارد لذا بدون تغییر ، به نوع دیگریی منتقل شده اما در حالت دوم عدد 1365 که گنجایش بزرگتری دارد لذا پس از تبدیل مقداری از بیتها حذف می شود و عدد 85 حاصل می شود .





نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد