در زبان سی شارپ انواع داده های مختلفی برای ذخیره مقادیر و داده های مورد نیاز برنامه وجود دارد. برای مثال، نوع داده int برای ذخیره اعداد صحیح و نوع داده string برای مقادیر رشته ای استفاده می شود.
زبان سی شارپ در زمان کامپایل شدن یک زبان statically-typed می باشد، بنابراین بعد از اینکه یک متغیر تعریف شد، نمی تواند دوباره تعریف شده و یا مقداری از نوع دیگر را دریافت کند مگر اینکه آن مقدار بصورت ضمنی قابل تبدیل شدن به نوع داده متغیر باشد. برای مثال، string نمی تواند بصورت ضمنی به int تبدیل شود. به عنوان مثال در کد زیر، بعد از اینکه متغیر i از نوع int تعریف گردید، دیگر نمی توان رشته "Hello" را به آن اختصاص داد.
اما گاهی وقت ها هست که تصمیم داریم یک نوع داده را به یک نوع داده دیگر تبدیل کنیم. به تبدیل یک نوع داده به نوع داده ای دیگر در زبان سی شارپ Type Casting (تبدیل نوع) می گوییم.
به صورت خلاصه (تبدیل نوع) زمانی انجام می شود که شما یک نوع متغیر را به نوع دیگری از متغیر تبدیل می کنید. در سی شارپ دو نوع تبدیل نوع داده وجود دارد:
- تبدیل نوع ضمنی (Implicit Casting) : در این نوع تبدیل بدون نیاز به کد خاصی، می توان مقدار یک متغیر را داخل یک متغیر دیگر ریخت. این کار به صورت خودکار صورت می پذیرد. به عنوان مثال تبدیل کردن یک نوع کوچک تر مثل int به یک نوع بزرگتر مثل long.
نکته: در این گونه تبدیل نوع قاعده نوشتاری خاصی نیاز نیست زیرا عملیات همیشه موفقیت آمیز بوده و داده ای از بین نمی رود.
- تبدیل نوع صریح (Explicit Casting): در این روش ما می بایست حتماً با نوشتن یکسری دستورات خاص، نوع ها را به یکدیگر تبدیل کنیم. به عنوان مثال تبدیل کردن یک نوع بزرگتر مثل long به یک نوع کوچک تر مثل int . در این حالت چون ممکن است یک سری از داده ها از بین برود، نیاز است تا برنامه نویس به صراحت تبدیل نوع را تایید کند.
تبدیل نوع ضمنی
تبدیل نوع ضمنی برای نوع داده های عددی built-in (از پیش تعریف شده) زمانی انجام می شود که مقداری که باید ذخیره شود می تواند بدون کوتاه شدن یا رند شدن درون یک متغیر قرار بگیرد. برای مثال نوع long می تواند تمام مقادیری که int ذخیره می کند را ذخیره کند. بنابراین هیچ داده ای دراین حالت از بین نمی رود. در مثال زیر کامپایلر بصورت ضمنی مقدار متغیر num را به نوع long تبدیل می کند.
تبدیل نوع ضمنی بصورت خودکار در زمانی که قصد داریم نوع داده کوچک تر را به نوع داده بزرگتر تبدیل کنیم صورت می گیرد. مثال زیر نحوه انجام این کار را نشان میدهد:
خروجی مثال بالا به شکل زیر است:
تبدیل نوع صریح
تبدیل نوع صریح باید بصورت دستی و توسط برنامه نویس، با قرار دادن نوع داده جدید در پرانتز و قرار دادن آن قبل از مقدار مورد نظر صورت بگیرد. هنگامی که یک تبدیل نوع نتواند بدون ریسک از دست رفتن اطلاعات انجام گیرد، کامپایلر از شما می خواهد که یک تبدیل نوع صریح انجام دهید که در زبان انگلیسی به آن cast هم گفته می شود. مثال زیر نحوه انجام این کار را نشان می دهد:
خروجی مثال بالا به شکل زیر است:
متدهای تبدیل نوع در سی شارپ
در زبان سی شارپ برای تبدیل صریح انواع به یک دیگر می توانید از متد های از پیش تعریف شده استفاده کنید. مثال زیر نحوه استفاده از این متدها را نمایش می دهد:
خروجی مثال بالا به شکل زیر است: