কালেকশনস এবং জেনেরিকস (Collections & Generics)
অ্যারে (Arrays) এবং লিস্টের (Lists) বাইরে (Beyond Arrays and Lists)
আপনি তো ইতিমধ্যেই List<T> এর ব্যাপারে জেনে গেছেন, কিন্তু সি শার্পে (C#) এর বাইরেও বিভিন্ন ধরনের কালেকশনের (collections) একটি বড় টুলবক্স (toolbox) রয়েছে, যার প্রতিটি টুল আলাদা আলাদা ধরনের কাজের জন্য তৈরি করা হয়েছে। সঠিক কালেকশনটি বেছে নেওয়া অনেকটা রান্নাঘরে সঠিক বোয়ম বা পাত্র বেছে নেওয়ার মতোই:
Dictionary<K,V>— একটি লেবেল করা ফাইলিং ক্যাবিনেট (filing cabinet)। কি (key) ব্যবহার করে মুহূর্তের মধ্যেই যেকোনো কিছু খুঁজে বের করা যায়।HashSet<T>— এটি হলো ইউনিক বা অদ্বিতীয় আইটেমের একটি ব্যাগ। এখানে একই জিনিস দুইবার রাখা যায় না (No duplicates allowed)। "এই জিনিসটি কি এখানে আছে?" — এমন কিছু খুব দ্রুত খুঁজতে এটি ব্যবহৃত হয়।Queue<T>— একটি দোকানের লাইন। যে সবার আগে আসবে, সে-ই সবার আগে সার্ভিস পাবে (First in, first out অথবা FIFO)।Stack<T>— একটি প্লেটের স্তূপ (stack of plates)। যেই প্লেটটি সবার শেষে রাখা হয়েছে, সেটিকেই সবার আগে তুলে নেওয়া হবে (Last in, first out অথবা LIFO)।
এখানে <T> অংশটিকে একটি জেনেরিক টাইপ প্যারামিটার (generic type parameter) বলা হয়। এর মানে হলো "এর ভেতরে কী ধরনের জিনিস বা টাইপের (type) ডেটা থাকবে, তা আপনিই ঠিক করে দেবেন।" জেনেরিকস আপনাকে টাইপ সেফটি (type safety) দেয়, যার ফলে প্রতিটি টাইপের জন্য আলাদা করে নতুন কোনো কোড লিখতে হয় না।
Dictionary<K,V> — কি-ভ্যালু দিয়ে খুঁজে বের করা (Dictionary<K,V> — Key-Value Lookup)
HashSet<T> — কেবল ইউনিক বা অদ্বিতীয় আইটেমের জন্য (HashSet<T> — Unique Items Only)
কিউ (Queue) ও স্ট্যাক (Stack) — এগুলোতে ক্রম বা অর্ডার (Order) খুবই গুরুত্বপূর্ণ (Queue & Stack — Order Matters)
Queue<T> এবং Stack<T> মূলত জিনিসপত্রগুলো কোন ক্রমে বের হবে, তা নিয়ন্ত্রণ করে:
- কিউ বা Queue (FIFO): এটি অনেকটা সিনেমা হলের লাইনের মতো। লাইনে যিনি সবার আগে দাঁড়াবেন, তিনিই সবার আগে টিকিট পাবেন। নতুন কাউকে লাইনে যুক্ত করার জন্য
Enqueue()এবং লাইন থেকে কাউকে বের করার জন্যDequeue()ব্যবহার করুন। - স্ট্যাক বা Stack (LIFO): এটি প্যানকেকের একটি স্তুপের মতো। যে প্যানকেকটি সবার শেষে বানানো হয়েছে, সেটিই সবার আগে খাওয়া হবে। নতুন কিছু যুক্ত করতে
Push()এবং কিছু সরিয়ে ফেলতেPop()ব্যবহার করুন।
এই দুটির ক্ষেত্রেই একটি Peek() নামের মেথড রয়েছে, যা দিয়ে আপনি জিনিসটিকে বের না করেই দেখতে পারবেন যে পরবর্তী আইটেমটি কী।
Queue<T> এবং Stack<T>
নিজেদের জন্য জেনেরিক কোড লেখা (Writing Your Own Generic Code)
আপনি চাইলে নিজেই নিজের জেনেরিক ক্লাস (generic classes) এবং মেথড (methods) তৈরি করতে পারেন। <T> হলো একটি প্লেসহোল্ডার (placeholder), অর্থাৎ যখন কেউ আপনার কোড ব্যবহার করবে, তখন এটি একটি আসল টাইপ (real type) দিয়ে বদলে যাবে। এটি অনেকটা এমন কোনো রেসিপির মতো যা বলে, "যেকোনো T টাইপের একটি জিনিস নাও" — আর বাবুর্চি নিজেই ঠিক করেন যে সেই T আসলে কী হবে।
জেনেরিক মেথডস এবং ক্লাসেস (Generic Methods & Classes)
ছোট কুইজ
পড়া চালিয়ে যান