অ্যারেস এবং লিস্টস (Arrays & Lists)
অ্যারে — নির্দিষ্ট আকারের পাত্র (Arrays — Fixed-Size Containers)
একটি অ্যারেকে (array) লকারের একটা সারির (row of lockers) মতো ভাবতে পারেন। যখন আপনি এটি তৈরি করেন, তখন আপনিই সিদ্ধান্ত নেন যে আপনার মোট কতগুলো লকার প্রয়োজন। প্রতিটি লকারের একটি করে নম্বর শুরু হয় ০ (0) থেকে (১ থেকে নয় — কম্পিউটারগুলো এদিক দিয়ে বেশ অদ্ভুত হয়ে থাকে)। আপনি প্রতিটি লকারে একটি করে জিনিস রাখতে পারেন এবং পরবর্তীতে সেই নম্বর দিয়ে জিনিসটি খুঁজেও বের করতে পারেন।
তবে এখানে একটা সমস্যা আছে! একবার আপনি লকারের সারিটি তৈরি করে ফেললে, আপনি আর কোনো লকার যুক্ত করতে বা সরিয়ে ফেলতে পারবেন না। এর সাইজ বা আকার একবারেই নির্ধারণ হয়ে যায় বা লক (lock) হয়ে যায়। আর এ কারণেই অ্যারেকে (array) "ফিক্সড-সাইজ (fixed-size)" বা নির্দিষ্ট আকারের বলা হয়ে থাকে।
অ্যারে বেসিকস (Array Basics)
List<T> — নমনীয় অ্যারেই হলো লিস্ট (List<T> — The Flexible Array)
অ্যারের গতি বেশি হলেও এরা বেশ অনমনীয় বা রিজিড (rigid) হয়ে থাকে। অন্যদিকে, List<T> হলো একটি জাদুর ব্যাগের (magical expanding backpack) মতো — আপনি চাইলে ইচ্ছামতো এর ভেতর নতুন জিনিসপত্র ঢোকাতে পারেন আর এটি নিজে থেকেই বড় হতে থাকবে। তাছাড়া, আপনি চাইলে যেকোনো জিনিস বাদ দিতে, নির্দিষ্ট কোনো জায়গায় নতুন কিছু ঢোকাতে এবং খুব সহজেই কোনো কিছু খুঁজতে পারেন।
এখানে <T> অংশটির মাধ্যমে আপনি লিস্টটিকে বলে দেন যে এটি কী ধরনের জিনিস বা ডেটা ধারণ করতে পারবে: যেমন List<int>, List<string> ইত্যাদি। এই পদ্ধতিকে জেনেরিক (generic) বলা হয়ে থাকে — এটি টাইপ-সেফ (type-safe), অর্থাৎ আপনি কোনোভাবেই একটি int বা পূর্ণ সংখ্যার লিস্টে ভুল করেও কোনো স্ট্রিং ঢোকাতে পারবেন না।
বাস্তব জীবনে সি শার্প (C#) নিয়ে কাজ করার সময় আপনি অ্যারের চেয়ে List<T>-কেই অনেক বেশি ব্যবহার করবেন।
ব্যাবহারিক ক্ষেত্রে List<T> (List<T> in Action)
LINQ — বসের মতো ডেটার কোয়েরি করা (LINQ — Query Your Data Like a Boss)
LINQ বা লিংক (Language Integrated Query) আপনাকে খুব পরিষ্কার এবং সহজে পড়া যায় এমন কোডের মাধ্যমে বিভিন্ন কালেকশনকে (collections) ফিল্টার (filter), ট্রান্সফর্ম (transform) এবং সার্চ (search) করার সুযোগ দেয়। একে সি শার্পের (C#) ভেতরে থাকা একটি সুপার-পাওয়ার্ড সার্চ ইঞ্জিন (super-powered search engine) বা শক্তিশালী সার্চ ইঞ্জিন হিসেবে ভাবতে পারেন।
শুরু করার জন্য দুটি প্রধান মেথড হলো:
.Where()— ফিল্টার করার জন্য: "আমাকে কেবল সেই আইটেমগুলোই দাও, যেগুলো এই নির্দিষ্ট শর্তের সাথে মিলে যায়".Select()— ট্রান্সফর্ম বা রূপান্তর করার জন্য: "প্রতিটি আইটেমকে পরিবর্তন করে ভিন্ন কিছু বানিয়ে ফেলো"
আমরা লিনকের (LINQ) বিষয়ে পরের কোনো একটি লেসনে আরও বিস্তারিত জানব, তবে এখনকার জন্য শুধু একটু ধারণা নিয়ে রাখুন।
কালেকশনের সাথে লিনক বেসিকস (LINQ Basics with Collections)
List<T> ব্যবহার করুন — এটি অনেক বেশি নমনীয় বা ফ্লেক্সিবল (flexible) এবং বড় বড় রিয়েল-লাইফ (real-life) প্রজেক্টে আপনি ৯০% সময় এটিই ব্যবহার করবেন।ছোট কুইজ
পড়া চালিয়ে যান