ListDictionary ক্লাসের IsReadOnly প্রোপার্টি ব্যবহার করে ডিকশনারি শুধুমাত্র পঠনযোগ্য কিনা তা জানা যায়। এই প্রোপার্টি সবসময় false রিটার্ন করে কারণ ListDictionary ডিফল্টভাবে মডিফাইযোগ্য (read-write)।
উদাহরণ ১: দুটি ListDictionary-র রিড-অনলি স্ট্যাটাস যাচাই
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
ListDictionary dict1 = new ListDictionary();
dict1.Add("A", "বই");
dict1.Add("B", "ইলেকট্রনিক্স");
dict1.Add("C", "স্মার্ট ওয়েয়ারেবল");
dict1.Add("D", "পেট সাপ্লাই");
dict1.Add("E", "পোশাক");
dict1.Add("F", "ফুটওয়েয়ার");
Console.WriteLine("ListDictionary1 উপাদানসমূহ...");
foreach (DictionaryEntry d in dict1) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("নির্দিষ্ট আকার কিনা? = " + dict1.IsFixedSize);
Console.WriteLine("শুধুমাত্র পঠনযোগ্য কিনা? = " + dict1.IsReadOnly);
Console.WriteLine("সিঙ্ক্রোনাইজড কিনা? = " + dict1.IsSynchronized);
Console.WriteLine("কী 'M' আছে কিনা? = " + dict1.Contains("M"));
ListDictionary dict2 = new ListDictionary();
dict2.Add("1", "এক");
dict2.Add("2", "দুই");
dict2.Add("3", "তিন");
dict2.Add("4", "চার");
dict2.Add("5", "পাঁচ");
dict2.Add("6", "ছয়");
Console.WriteLine("\nListDictionary2 কী-ভ্যালু জোড়া...");
IDictionaryEnumerator demoEnum = dict2.GetEnumerator();
while (demoEnum.MoveNext()) {
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
Console.WriteLine("নির্দিষ্ট আকার কিনা? = " + dict2.IsFixedSize);
Console.WriteLine("শুধুমাত্র পঠনযোগ্য কিনা? = " + dict2.IsReadOnly);
Console.WriteLine("সিঙ্ক্রোনাইজড কিনা? = " + dict2.IsSynchronized);
Console.WriteLine("কী '5' আছে কিনা? = " + dict2.Contains("5"));
}
}
আউটপুট
ListDictionary1 উপাদানসমূহ... A বই B ইলেকট্রনিক্স C স্মার্ট ওয়েয়ারেবল D পেট সাপ্লাই E পোশাক F ফুটওয়েয়ার নির্দিষ্ট আকার কিনা? = False শুধুমাত্র পঠনযোগ্য কিনা? = False সিঙ্ক্রোনাইজড কিনা? = False কী 'M' আছে কিনা? = False ListDictionary2 কী-ভ্যালু জোড়া... Key = 1, Value = এক Key = 2, Value = দুই Key = 3, Value = তিন Key = 4, Value = চার Key = 5, Value = পাঁচ Key = 6, Value = ছয় নির্দিষ্ট আকার কিনা? = False শুধুমাত্র পঠনযোগ্য কিনা? = False সিঙ্ক্রোনাইজড কিনা? = False কী '5' আছে কিনা? = True
উদাহরণ ২: আরেকটি ListDictionary-র প্রোপার্টি যাচাই
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
ListDictionary dict = new ListDictionary();
dict.Add("1", "SUV");
dict.Add("2", "সেডান");
dict.Add("3", "ইউটিলিটি ভেহিকেল");
dict.Add("4", "কম্প্যাক্ট কার");
dict.Add("5", "SUV");
dict.Add("6", "সেডান");
dict.Add("7", "ইউটিলিটি ভেহিকেল");
dict.Add("8", "কম্প্যাক্ট কার");
dict.Add("9", "ক্রসওভার");
dict.Add("10", "ইলেকট্রিক কার");
Console.WriteLine("ListDictionary উপাদানসমূহ...");
foreach (DictionaryEntry d in dict) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nনির্দিষ্ট আকার কিনা? = " + dict.IsFixedSize);
Console.WriteLine("শুধুমাত্র পঠনযোগ্য কিনা? = " + dict.IsReadOnly);
Console.WriteLine("সিঙ্ক্রোনাইজড কিনা? = " + dict.IsSynchronized);
Console.WriteLine("কী 'K' আছে কিনা? = " + dict.Contains("K"));
Console.WriteLine("কী '9' আছে কিনা? = " + dict.Contains("9"));
}
}
আউটপুট
ListDictionary উপাদানসমূহ... 1 SUV 2 সেডান 3 ইউটিলিটি ভেহিকেল 4 কম্প্যাক্ট কার 5 SUV 6 সেডান 7 ইউটিলিটি ভেহিকেল 8 কম্প্যাক্ট কার 9 ক্রসওভার 10 ইলেকট্রিক কার নির্দিষ্ট আকার কিনা? = False শুধুমাত্র পঠনযোগ্য কিনা? = False সিঙ্ক্রোনাইজড কিনা? = False কী 'K' আছে কিনা? = False কী '9' আছে কিনা? = True
ListDictionary-র তিনটি মূল প্রোপার্টি সারসংক্ষেপ
| প্রোপার্টি | রিটার্ন | অর্থ |
|---|---|---|
IsReadOnly | false | ডিকশনারি মডিফাই করা যায় (Add/Remove/Clear) |
IsFixedSize | false | আকার পরিবর্তন করা যায় |
IsSynchronized | false | থ্রেড-সেফ নয় |
রিড-অনলি ডিকশনারি তৈরি করার পদ্ধতি
// পদ্ধতি ১: লিগ্যাসি - ReadOnly wrapper (নন-জেনেরিক)
IDictionary readOnlyDict = new ListDictionary();
// ... আইটেম যোগ করুন ...
// ListDictionary-র জন্য বিল্ট-ইন ReadOnly মেথড নেই
// Hashtable-এ আছে: Hashtable.Synchronized() / ReadOnly()
// পদ্ধতি ২: আধুনিক - IReadOnlyDictionary (সুপারিশকৃত)
using System.Collections.Generic;
using System.Collections.ObjectModel;
var dict = new Dictionary<string, string>();
dict.Add("A", "বই");
dict.Add("B", "ইলেকট্রনিক্স");
// রিড-অনলি র্যাপার
IReadOnlyDictionary<string, string> readOnly = new ReadOnlyDictionary<string, string>(dict);
// অথবা .NET 6+ এ:
IReadOnlyDictionary<string, string> readOnly2 = dict.AsReadOnly(); // Extension method
// পদ্ধতি ৩: ImmutableDictionary (System.Collections.Immutable প্যাকেজ)
using System.Collections.Immutable;
var immutableDict = dict.ToImmutableDictionary(); // সম্পূর্ণ ইমিউটেবল
সুপারিশ
ListDictionaryলিগ্যাসি নন-জেনেরিক ক্লাস।- নতুন কোডে
Dictionary<TKey, TValue>+ReadOnlyDictionary<TKey, TValue>বাImmutableDictionary<TKey, TValue>ব্যবহার করুন। IsReadOnlyপ্রোপার্টি শুধু ইনফরমেশনাল - এটি সবসময়falseরিটার্ন করে।