परिचय
HybridDictionary क्लास IDictionary को लागू करती है। यह छोटे संग्रहों के लिए ListDictionary (लिंक्ड लिस्ट) का उपयोग करती है और जब संग्रह बड़ा हो जाता है तो स्वचालित रूप से Hashtable पर स्विच हो जाती है। यह प्रदर्शन को अनुकूलित करता है।
गुण
| क्र.सं. | गुण और विवरण |
| 1 | Count - कुंजी/मान जोड़े की संख्या। |
| 2 | IsFixedSize - निश्चित आकार है या नहीं। |
| 3 | IsReadOnly - रीड-ओनली है या नहीं। |
| 4 | IsSynchronized - थ्रेड-सेफ है या नहीं। |
| 5 | Item[Object] - निर्दिष्ट कुंजी से जुड़ा मान प्राप्त/सेट करता है। |
| 6 | Keys - कुंजियों का संग्रह। |
| 7 | SyncRoot - सिंक्रनाइज़ेशन के लिए ऑब्जेक्ट। |
| 8 | Values - मानों का संग्रह। |
मुख्य मेथड्स
| क्र.सं. | मेथड और विवरण |
| 1 | Add(Object, Object) - कुंजी और मान के साथ एंट्री जोड़ता है। |
| 2 | Clear() - सभी एंट्रीज़ हटाता है। |
| 3 | Contains(Object) - विशिष्ट कुंजी मौजूद है या नहीं जांचता है। |
| 4 | CopyTo(Array, Int32) - एंट्रीज़ को एक-आयामी सरणी में कॉपी करता है। |
| 5 | GetEnumerator() - IDictionaryEnumerator लौटाता है। |
उदाहरण 1: Count और Clear
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary dict1 = new HybridDictionary();
dict1.Add("A", "SUV");
dict1.Add("B", "MUV");
dict1.Add("C", "AUV");
Console.WriteLine("HybridDictionary1 तत्व...");
foreach(DictionaryEntry d in dict1) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Dictionary1 में कुंजी/मान जोड़े की संख्या = " + dict1.Count);
HybridDictionary dict2 = new HybridDictionary();
dict2.Add("1", "One");
dict2.Add("2", "Two");
dict2.Add("3", "Three");
dict2.Add("4", "Four");
dict2.Add("5", "Five");
dict2.Add("6", "Six");
Console.WriteLine("\nHybridDictionary2 तत्व...");
foreach(DictionaryEntry d in dict2) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Dictionary2 में कुंजी/मान जोड़े की संख्या = " + dict1.Count); // बग: dict2.Count होना चाहिए
dict2.Clear();
Console.WriteLine("Dictionary2 में कुंजी/मान जोड़े की संख्या (अपडेटेड) = " + dict2.Count);
}
}
आउटपुट
HybridDictionary1 तत्व...
A SUV
B MUV
C AUV
Dictionary1 में कुंजी/मान जोड़े की संख्या = 3
HybridDictionary2 तत्व...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
Dictionary2 में कुंजी/मान जोड़े की संख्या = 3
Dictionary2 में कुंजी/मान जोड़े की संख्या (अपडेटेड) = 0
उदाहरण 2: गुणों की जांच
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary dict1 = new HybridDictionary();
dict1.Add("A", "Books");
dict1.Add("B", "Electronics");
dict1.Add("C", "Smart Wearables");
dict1.Add("D", "Pet Supplies");
dict1.Add("E", "Clothing");
dict1.Add("F", "Footwear");
Console.WriteLine("HybridDictionary1 तत्व...");
foreach(DictionaryEntry d in dict1) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("क्या HybridDictionary1 का आकार निश्चित है? = " + dict1.IsFixedSize);
Console.WriteLine("क्या HybridDictionary1 रीड-ओनली है? = " + dict1.IsReadOnly);
Console.WriteLine("क्या HybridDictionary1 सिंक्रनाइज़्ड है? = " + dict1.IsSynchronized);
HybridDictionary dict2 = new HybridDictionary();
dict2.Add("1", "One");
dict2.Add("2", "Two");
dict2.Add("3", "Three");
dict2.Add("4", "Four");
dict2.Add("5", "Five");
dict2.Add("6", "Six");
Console.WriteLine("\nHybridDictionary2 तत्व...");
foreach(DictionaryEntry d in dict2) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("क्या HybridDictionary1, HybridDictionary2 के बराबर है? = " + (dict1.Equals(dict2)));
Console.WriteLine("क्या HybridDictionary2 का आकार निश्चित है? = " + dict2.IsFixedSize);
Console.WriteLine("क्या HybridDictionary2 रीड-ओनली है? = " + dict2.IsReadOnly);
Console.WriteLine("क्या HybridDictionary2 सिंक्रनाइज़्ड है? = " + dict2.IsSynchronized);
}
}
आउटपुट
HybridDictionary1 तत्व...
A Books
B Electronics
C Smart Wearables
D Pet Supplies
E Clothing
F Footwear
क्या HybridDictionary1 का आकार निश्चित है? = False
क्या HybridDictionary1 रीड-ओनली है? = False
क्या HybridDictionary1 सिंक्रनाइज़्ड है? = False
HybridDictionary2 तत्व...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
क्या HybridDictionary1, HybridDictionary2 के बराबर है? = False
क्या HybridDictionary2 का आकार निश्चित है? = False
क्या HybridDictionary2 रीड-ओनली है? = False
क्या HybridDictionary2 सिंक्रनाइज़्ड है? = False
मुख्य बिंदु
- स्वचालित रूप से ListDictionary से Hashtable पर स्विच होता है (आमतौर पर 10 आइटम्स के बाद)।
- थ्रेड-सेफ नहीं; सिंक्रनाइज़ेशन के लिए
SyncRoot का उपयोग करें।
- नए कोड में
Dictionary<TKey, TValue> या ConcurrentDictionary प्राथमिकता दें।