সি শার্প ডাটা টাইপ

সি শার্পের ভেরিয়েবলকে তিনটি শ্রেণীতে ভাগ করা যায় । এগুলো হল

১. ভ্যালু টাইপ

২. রেফারেন্স টাইপ

৩. পয়েন্টার টাইপ

১. ভ্যালু টাইপঃ ভ্যালু টাইপ ভেরিয়েবল সরাসরি ভ্যালু নির্ধারণ করতে পারে । এই ভ্যালু টাইপ গুলো System.ValueType ক্লাসের মাধ্যমে পাওয়া যায় ।

ভ্যালু টাইপ ভেরিয়েবল সরাসরি ডাটা ধারণ করে । যেমনঃ int (নাম্বার স্টোর করার জন্য), char (অ্যালফাবেট স্টোর করার জন্য), এবং float (ফ্লোটিং পয়েন্ট নাম্বার স্টোর করার জন্য) । আপনি যদি int টাইপ ডিক্লেয়ার বা ঘোষণা করেন, তখন সিস্টেম মেমরিতে ভ্যালু স্টোর করার জন্য জায়গা বরাদ্দ করে রাখে ।

নিচের  সি শার্পের সবচে বেশী ব্যবহৃত ভ্যালু টাইপ গুলো দেখানো হলঃ

সি শার্প ডাটা টাইপ

২. রেফারেন্স টাইপঃ একটি ভেরিয়েবলে যেই ডাটা গুলো স্টোর থাকে, রেফারেন্স টাইপ সেই ডাটা গুলকে ধারন করেনা । কিন্তু ভেরিয়েবলের রেফারেন্স গুলকে ধারন করে । অন্যভাবে বলা যায় রেফারেন্স টাইপ মেমরি লোকেশান উল্লেখ করে ।

রেফারেন্স টাইপ একটা মেমরি লোকেশানে একাধিক ভেরিয়েবল উল্লেখ করতে পারে । যদি কোন একটি ভেরিয়েবলের মেমরি লোকেশানের ডাটা পরিবর্তন করা হয়, তাহলে অন্যান্য ভেরিয়েবলেও এই পরিবর্তনের প্রতিফলন ঘটে । সি শার্পের বিল্টইন রেফারেন্স টাইপ গুলো হল

২.১. অবজেক্ট টাইপ,

২.২. ডায়নামিক টাইপ এবং

২.৩. স্ট্রিং টাইপ

২.১. অবজেক্ট টাইপঃ অবজেক্ট টাইপ হল সি শার্পের কমন টাইপ সিস্টেমে (সি টি এস) সকল ডাটা টাইপের জন্য একটি আলটিমেট বেস বা ভিত্তি। System.Object ক্লাসের আরেকটি নাম হল অবজেক্ট । ভ্যালু টাইপ, রেফারেন্স টাইপ, পূর্বনির্ধারিত বা ইউজার ডিফাইন টাইপে অবজেক্ট টাইপ নির্ধারণ করা যায় । তবে কোন ভ্যালু নির্ধারণ করার আগে অবশ্যই টাইপ পরিবর্তন বা কনভার্সন করে নিতে হবে ।

যখন ভ্যালু টাইপকে অবজেক্ট টাইপে পরিবর্তন বা কনভার্ট করা হয় তখন তাকে বক্সিং বলা হয় এবং যখন অবজেক্ট টাইপকে ভ্যালু টাইপে পরিবর্তন বা কনভার্ট করা হয় তখন তাকে আনবক্সিং বলা হয় । যেমনঃ

int i = 123;

object o = i; // বক্সিং 

//********************

o = 123;

i = (int)o; // আনবক্সিং

২.২. ডায়নামিক টাইপঃ ডায়নামিক টাইপে যেকোন ধরনের টাইপ স্টোর বা সঞ্চয় করা যায় । এই টাইপের ক্ষেত্রে সি শার্প কোড রান করার সময় টাইপ চেক হয় । যেমনঃ

dynamic d = 1;

dynamic e = 5.65;

dynamic f = “Hello”;

ডায়নামিক টাইপ এবং অবজেক্ট টাইপ অনেকটা একরকম । শুধু এদের মধ্যে পার্থক্য হল কোড কম্পাইল করার সময় অবজেক্ট টাইপ চেক হয় এবং কোড রান করার সময় ডায়নামিক টাইপ চেক হয় ।

২.৩. স্ট্রিং টাইপঃ System.String ক্লাসের আরেকটি নাম হল স্ট্রিং । স্ট্রিং টাইপ ভেরিয়েবলে যেকোন ধরনের স্ট্রিং ভ্যালু নির্ধারণ করা যায় । অবজেক্ট টাইপ থেকে স্ট্রিং টাইপ পাওয়া যায় । স্ট্রিং টাইপ ভেরিয়েবলে ভ্যালু নির্ধারণ করার জন্য ডাবল কোটেশন (“ ”) বা @) ব্যবহার করা হয় । ডাবল কোটেশনের ভিতরে বা @ এর পরে ডাবল কোটেশনের ভিতরে কিছু রাখলেই সেটা স্ট্রিং হিসেবে গন্য হয় । এমনকি “100” এটাও একটা স্ট্রিং হিসেবে গন্য হয় । যেমনঃ

String value1 = “C Sharp Programming”;

String value2 = @”C Sharp Programming”;

String value3 = “100”;

ক্লাস, ইন্টারফেস ইত্যাদি এগুলো হল ইউজার ডিফাইন রেফারেন্স টাইপ । ইউজার ডিফাইন রেফারেন্স টাইপ সম্পর্কে সামনে আলোচনা করা হবে ।

৩. পয়েন্টার টাইপঃ পয়েন্টার টাইপ ভেরিয়েবল শুধু মাত্র অন্য একটি ভেরিয়েবলের মেমরি এড্রেস স্টোর করে রাখতে পারে । এভাবে কোন মেমরি এড্রেসকে স্টোর করাকে পয়েন্ট করা বলা হয় । পয়েন্টার টাইপ কখনো রেফারেন্স টাইপ বা অন্য কোন টাইপ যেখানে রেফারেন্স টাইপ রয়েছে, এই ধরনের টাইপকে পয়েন্ট করবেনা । পয়েন্টার শুধু মাত্র আনম্যানেজড টাইপকে (বেসিক ডাটা টাইপ, ইনাম টাইপ ইত্যাদি) পয়েন্ট করতে পারে । যেমনঃ

int value = 10;

int * pointer = &value;

সামনে পয়েন্টার টাইপ নিয়ে বিস্তারিত আলোচনা করা হবে ।

লেখক পরিচিতিঃ

Ashiqur Rahman