কম্পিউটার টিউটোরিয়াল

C#-তে ListDictionary-র ভ্যালুগুলোর ICollection পেতে Values প্রোপার্টি ব্যবহার

ListDictionary ক্লাসের Values প্রোপার্টি একটি ICollection রিটার্ন করে যা ডিকশনারির সব মান (value) ধারণ করে। এই কালেকশনকে এনুমারেট করে বা অ্যারেতে কপি করে সব ভ্যালু পাওয়া যায়।

উদাহরণ ১: ডিভাইস নামের ভ্যালু সংগ্রহ

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
    public static void Main() {
        ListDictionary listDict = new ListDictionary();
        listDict.Add("1", "ল্যাপটপ");
        listDict.Add("2", "ট্যাবলেট");
        listDict.Add("3", "ডেস্কটপ");
        listDict.Add("4", "স্পিকার");
        listDict.Add("5", "ইয়ারফোন");
        listDict.Add("6", "হেডফোন");

        // Values প্রোপার্টি থেকে ICollection পাওয়া
        ICollection col = listDict.Values;

        Console.WriteLine("ListDictionary-র সব ভ্যালু:");
        foreach (String s in col) {
            Console.WriteLine(s);
        }
    }
}

আউটপুট

ল্যাপটপ
ট্যাবলেট
ডেস্কটপ
স্পিকার
ইয়ারফোন
হেডফোন

উদাহরণ ২: ব্যক্তির নামের ভ্যালু সংগ্রহ

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
    public static void Main() {
        ListDictionary listDict = new ListDictionary();
        listDict.Add("A", "টম");
        listDict.Add("B", "জন");
        listDict.Add("C", "কেভিন");
        listDict.Add("D", "টিম");

        ICollection col = listDict.Values;

        Console.WriteLine("ListDictionary-র সব ভ্যালু:");
        foreach (String s in col) {
            Console.WriteLine(s);
        }
    }
}

আউটপুট

টম
জন
কেভিন
টিম

বিকল্প পদ্ধতিগুলো

// ১. Values কালেকশনকে অ্যারেতে কপি
string[] valuesArray = new string[listDict.Count];
listDict.Values.CopyTo(valuesArray, 0);

for (int i = 0; i < valuesArray.Length; i++) {
    Console.WriteLine(valuesArray[i]);
}

// ২. foreach দিয়ে সরাসরি Values এনুমারেট (উপরের উদাহরণের মতো)
// ৩. DictionaryEntry দিয়ে কী-ভ্যালু উভয় একসাথে
foreach (DictionaryEntry entry in listDict) {
    Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}

// ৪. LINQ ব্যবহার (System.Linq namespace দরকার)
var valuesList = listDict.Values.Cast<string>().ToList();
valuesList.ForEach(v => Console.WriteLine(v));

গুরুত্বপূর্ণ বিষয়সমূহ

  • Values প্রোপার্টি ICollection রিটার্ন করে (নন-জেনেরিক)।
  • ভ্যালুগুলোর ক্রম ইনসারশন অর্ডার অনুসরণ করে (ListDictionary-র বৈশিষ্ট্য)।
  • ডুপ্লিকেট ভ্যালু থাকতে পারে (কী ইউনিক হয়, ভ্যালু নয়)।
  • Values.Count দিয়ে ভ্যালুগুলোর সংখ্যা জানা যায়।
  • এই কালেকশন রিয়েল-টাইম ভিউ - ডিকশনারি পরিবর্তন হলে কালেকশনটিও পরিবর্তিত হয়।

সুবিধা ও অসুবিধা

পদ্ধতিসুবিধাঅসুবিধা
foreach (Values)সহজ, মেমরি দক্ষশুধু ভ্যালু পাওয়া যায়, কী নয়
CopyTo অ্যারের‍্যান্ডম অ্যাক্সেস, इंडেক্সিংঅতিরিক্ত মেমরি, কপি 오ভারহেড
DictionaryEntry foreachকী-ভ্যালু উভয় পাওয়া যায়বক্সিং/আনবক্সিং ওভারহেড (নন-জেনেরিক)
  1. C#-তে OrderedDictionary-র শুধুমাত্র পঠনযোগ্য (Read-Only) কপি পেতে AsReadOnly() মেথড ব্যবহার

  2. C#-এ StringDictionary-র মান সংগ্রহ পান

  3. C#-এ OrderedDictionary-এ মানগুলির ICollection পাওয়া (Values প্রপার্টি)

  4. C#-এ লিস্ট থেকে রেঞ্জ অনুযায়ী উপাদান পাওয়া