একটি কলেকশন ডিফাইন করার সময় সাধারণত অ্যাঙ্গেল ব্র্যাকেটের ভেতরে একটি প্লেসহোল্ডার থাকে, প্রচলন অনুযায়ী যা প্রায়ই T হয়। এমন কলেকশনকে জেনেরিক টাইপ বলা হয়। এতে কলেকশন ব্যবহারকারী ঠিক করতে পারেন যে কলেকশনে কোন ধরনের আইটেম রাখা হবে। নিচের উদাহরণ কোডে আমরা স্ট্রিং-এর একটি অ্যারে ইনস্ট্যানশিয়েট করছি।
C#-এ অ্যারে হলো প্রিমিটিভ মান অথবা স্ট্রাক্ট বা ক্লাসের ইনস্ট্যান্সের কলেকশন। এগুলো বেস ক্লাস লাইব্রেরিতে List<T> হিসেবে ইমপ্লিমেন্ট করা হয়েছে, যেখানে T হলো অ্যারের ভেতরের আইটেমের টাইপ। অ্যারে তৈরি ও ম্যানিপুলেট করার জন্য API বিস্তৃত মেথড সরবরাহ করে।
অ্যারেতে আইটেম যোগ করা যায় আবার মুছে ফেলা যায়। প্রয়োজন অনুসারে এগুলো বড় ও ছোট হয়।
var listOfStrings = new List<string>();
এই অনুশীলনীতে আপনি Exercism-এ যে প্রোগ্রামিং ভাষাগুলো শিখতে চান, সেগুলোর একটি অ্যারের ট্র্যাক রাখার কোড লিখবেন।
আপনার সামনে নয়টি কাজ আছে, যার সবগুলোতেই অ্যারে নিয়ে কাজ করতে হবে।
আপনি যে প্রোগ্রামিং ভাষাগুলো শিখতে চান তার ট্র্যাক রাখতে হলে আপনাকে একটি নতুন অ্যারে তৈরি করতে হবে।
নতুন ও খালি একটি অ্যারে রিটার্ন করে এমন static Languages.NewList() মেথডটি ইমপ্লিমেন্ট করুন।
Languages.NewList()
// => empty list
এই মুহূর্তে আপনার হাতে একটি কাগজ আছে, যাতে আপনি শিখতে চাওয়া প্রোগ্রামিং ভাষাগুলোর নাম লেখা: C#, Clojure এবং Elm।
অ্যারেটি রিটার্ন করার জন্য static Languages.GetExistingLanguages() মেথডটি ইমপ্লিমেন্ট করুন।
Languages.GetExistingLanguages();
// => {"C#", "Clojure", "Elm"}
Exercism ঘুরে ঘুরে আপনি যখন আরও মজার প্রোগ্রামিং ভাষা খুঁজে পান, তখন সেগুলো আপনার অ্যারেতে যোগ করতে চান।
আপনার অ্যারের শেষে একটি নতুন প্রোগ্রামিং ভাষা যোগ করার জন্য static Languages.AddLanguage() ফাংশনটি ইমপ্লিমেন্ট করুন।
Languages.AddLanguage(Languages.GetExistingLanguages(), "VBA");
// => {"C#", "Clojure", "Elm", "VBA"}
প্রোগ্রামিং ভাষাগুলো এক এক করে গণনা করা অসুবিধাজনক।
আপনার অ্যারেতে থাকা প্রোগ্রামিং ভাষার সংখ্যা গণনা করার জন্য static Languages.CountLanguages() মেথডটি ইমপ্লিমেন্ট করুন।
Languages.CountLanguages(Languages.GetExistingLanguages())
// => 3
একটি প্রোগ্রামিং ভাষা আছে কি না তা দেখার জন্য static Languages.HasLanguage() মেথডটি ইমপ্লিমেন্ট করুন।
Languages.HasLanguage(Languages.GetExistingLanguages(), "Elm")
// => true
একপর্যায়ে আপনি বুঝতে পারবেন যে আপনার অ্যারেটি আসলে উল্টো ক্রমে সাজানো!
আপনার অ্যারেটি উল্টে দেওয়ার জন্য static Languages.ReverseList() মেথডটি ইমপ্লিমেন্ট করুন।
Languages.ReverseList(Languages.GetExistingLanguages())
// => {"Elm", "Clojure", "C#"}
আপনি সব প্রোগ্রামিং ভাষাই ভালোবাসেন, তবে C#-এর জন্য আপনার হৃদয়ে বিশেষ একটি জায়গা আছে। তাই নিচের যেকোনো একটি শর্ত ট্রু হলে আপনি প্রোগ্রামিং ভাষার একটি অ্যারে নিয়ে সত্যিই উত্তেজিত হন:
প্রোগ্রামিং ভাষার একটি অ্যারে উত্তেজনাপূর্ণ কি না তা দেখার জন্য static Languages.IsExciting() মেথডটি ইমপ্লিমেন্ট করুন:
Languages.IsExciting(Languages.GetExistingLanguages())
// => true
অ্যারে থেকে একটি নির্দিষ্ট প্রোগ্রামিং ভাষা সরানোর জন্য static Languages.RemoveLanguage() মেথডটি ইমপ্লিমেন্ট করুন।
Languages.RemoveLanguage(Languages.GetExistingLanguages(), "Clojure")
// => { "C#", "Elm" }
অ্যারেতে কোনো প্রোগ্রামিং ভাষা একাধিকবার এসেছে কি না তা দেখার জন্য static Languages.IsUnique() মেথডটি ইমপ্লিমেন্ট করুন।
এই মেথডটি কল করার সময় প্রোগ্রামিং ভাষার অ্যারে (অর্থাৎ প্যারামিটার) খালি থাকবে না, এটি নিশ্চিত, আর অ্যারেটি পরিবর্তন হলেও কিছু আসে যায় না।
Languages.IsUnique(Languages.GetExistingLanguages())
// => true
Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।