একটা নির্দিষ্ট টাইপের ডাটা থেকে অন্য আরেকটি টাইপের ডাটায় পরিবর্তন করার পদ্ধতিকে সি শার্পে টাইপ কনভার্সন বলা হয় । একে টাইপ কাস্টিং ও বলা হয় । সি শার্পে দুই ধরনের টাইপ কনভার্সন রয়েছে । এগুলো হোল
১. ইমপ্লিসিট টাইপ কনভার্সন
২. এক্সপ্লিসিট টাইপ কনভার্সন
১. ইমপ্লিসিট টাইপ কনভার্সনঃ ইমপ্লিসিট কনভার্সন কম্পাইলার দ্বারা স্বয়ংক্রিয়ভাবে ঘটে এবং এখানে কোন ডাটা নষ্ট হয় না । ছোট টাইপের ডাটাকে বড় টাইপের ডাটায় কনভার্সন এবং ডিরাইভড ক্লাসকে বেস ক্লাসে কনভার্সন করা পদ্ধতিকেও ইমপ্লিসিট কনভার্সন বলা হয় । যেমনঃ
int number1 = 50000;
int number2 = 100;
double sum;
sum = number1 + number2; //ইমপ্লিসিট টাইপ কনভার্সন
//…………………………………………………………………..
private class Base
{
public int number1 { get; set; }
}
private class Derived : Base
{
public int number2 { get; set; }
}
private static void Main(string[] args)
{
Derived d = new Derived();
Base b = d; //ইমপ্লিসিট টাইপ কনভার্সন
}
২. এক্সপ্লিসিট টাইপ কনভার্সনঃ এক্সপ্লিসিট কনভার্সন কম্পাইলার দ্বারা স্বয়ংক্রিয়ভাবে ঘটেনা । এই ধরনে কনভার্সনের জন্য কাস্ট অপারেটর ব্যবহার করে কম্পাইলারকে একটি নির্দিষ্ট টাইপে কনভার্সনের জন্য নির্দেশনা পাঠানো হয় এবং এই নির্দেশনা অনুসারে কম্পাইলার কনভার্সন করে । বড় টাইপের ডাটাকে ছোট টাইপের ডাটায় কনভার্সন এবং বেস ক্লাসকে ডিরাইভড ক্লাসে কনভার্সন করা পদ্ধতিকেও এক্সপ্লিসিট কনভার্সন বলা হয় । আমরা যখন একটা টাইপকে অন্য আরেকটি টাইপ এ কাস্টইং করি তখন কনভার্সনের জন্য কম্পাইলারকে ফোর্স বা জোর করা হয় । কাস্ট করে কনভার্সন করলে সব সময় সঠিক ফলাফল পাওয়া যায়না । যখন বড় টাইপের ডাটাকে ছোট টাইপের ডাটায় কনভার্সন করা হয় তখন কিছু পরিমান ডাটা নষ্ট হয় । এজন্য এভাবে সম্ভাব্য ফলাফল পাওয়া যায় ।
Base b = new Base();
Derived d = (Derived)b; //এক্সপ্লিসিট কনভার্সন
//………………………………………………………..
int number1 = 65;
char alphabet;
alphabet = (char)number1;//এক্সপ্লিসিট কনভার্সন
double number2 = 650.550;
int number3;
number3 = (int)number2;//এক্সপ্লিসিট কনভার্সন
প্রোগ্রামটি কম্পাইল হয়ে রান হওয়ার পর number3 এর মান 650 পাওয়া যাবে । এখানে ডাটা নষ্ট হচ্ছে ।
সি শার্প টাইপ কনভার্সন মেথডঃ
কনভার্সনের জন্য সি শার্পে কিছু বিল্ট ইন টাইপ কনভার্সন মেথড রয়েছেঃ
সিরিয়াল নং |
মেথড এবং বর্ণনা |
১. |
ToBoolean প্রয়োজন অনুসারে কোন টাইপকে বুলিয়ান ভেলুতে কনভার্ট করার জন্য ব্যবহার করা হয় |
২. |
ToByte প্রয়োজন অনুসারে কোন টাইপকে বাইটে কনভার্ট করার জন্য ব্যবহার করা হয় |
৩. |
ToChar প্রয়োজন অনুসারে কোন টাইপকে একটি ইউনিকোড অক্ষরে কনভার্ট করার জন্য ব্যবহার করা হয় |
৪. |
ToDateTime প্রয়োজন অনুসারে কোন ইন্টিজারে বা স্ট্রিং টাইপকে তারিখ ও সময়ে কনভার্ট করার জন্য ব্যবহার করা হয় |
৫. |
ToDecimal প্রয়োজন অনুসারে কোন ফ্লোটিং পয়েন্ট বা ইন্টিজার টাইপকে ডেসিমেল টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |
৬. |
ToDouble প্রয়োজন অনুসারে কোন টাইপকে ডাবল টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |
৭. |
ToInt16 প্রয়োজন অনুসারে কোন টাইপকে ১৬ বিট ইন্টিজারে কনভার্ট করার জন্য ব্যবহার করা হয় |
৮. |
ToInt32 প্রয়োজন অনুসারে কোন টাইপকে ৩২ বিট ইন্টিজারে কনভার্ট করার জন্য ব্যবহার করা হয় |
৯. |
ToInt64 প্রয়োজন অনুসারে কোন টাইপকে ৬৪ বিট ইন্টিজারে কনভার্ট করার জন্য ব্যবহার করা হয় |
১০. |
ToSbyte প্রয়োজন অনুসারে কোন টাইপকে সাইনড(ধনাত্মক বা ঋণাত্মক) বাইটে কনভার্ট করার জন্য ব্যবহার করা হয় |
১১. |
ToSingle প্রয়োজন অনুসারে কোন টাইপকে ছোট ফ্লোটিং পয়েন্ট নাম্বারে কনভার্ট করার জন্য ব্যবহার করা হয় |
১২. |
ToString প্রয়োজন অনুসারে কোন টাইপকে স্ট্রিং টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |
১৩. |
ToType প্রয়োজন অনুসারে কোন টাইপকে উল্লিখিত বা ইউজার ডিফাইন টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |
১৪. |
ToUInt16 প্রয়োজন অনুসারে কোন টাইপকে আনসাইনড ইন্টিজার টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |
১৫. |
ToUInt32 প্রয়োজন অনুসারে কোন টাইপকে আনসাইনড লং টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |
১৬. |
ToUInt64 প্রয়োজন অনুসারে কোন টাইপকে বড় আনসাইনড ইন্টিজার টাইপে কনভার্ট করার জন্য ব্যবহার করা হয় |