Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में ListDictionary के लिए सिंक्रनाइज़्ड एक्सेस प्राप्त करना

परिचय

ListDictionary थ्रेड-सेफ नहीं है। मल्टी-थ्रेडेड परिदृश्यों में सुरक्षित एन्यूमरेशन के लिए SyncRoot प्रॉपर्टी के साथ lock स्टेटमेंट का उपयोग करें।

उदाहरण 1: 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", "Sedan");
        dict.Add("3", "Utility Vehicle");
        dict.Add("4", "Compact Car");
        dict.Add("5", "SUV");
        dict.Add("6", "Sedan");
        dict.Add("7", "Utility Vehicle");
        dict.Add("8", "Compact Car");
        dict.Add("9", "Crossover");
        dict.Add("10", "Electric Car");

        Console.WriteLine("ListDictionary तत्व...");
        foreach(DictionaryEntry d in dict) {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("\nक्या ListDictionary का आकार निश्चित है? = " + dict.IsFixedSize);
        Console.WriteLine("क्या ListDictionary रीड-ओनली है? = " + dict.IsReadOnly);
        Console.WriteLine("क्या ListDictionary सिंक्रनाइज़्ड है? = " + dict.IsSynchronized);
        Console.WriteLine("क्या ListDictionary में कुंजी K है? = " + dict.Contains("K"));
        Console.WriteLine("क्या ListDictionary में कुंजी 9 है? = " + dict.Contains("9"));

        Console.WriteLine("\nसिंक्रनाइज़्ड एक्सेस...");
        lock(dict.SyncRoot) {
            foreach(DictionaryEntry d in dict) {
                Console.WriteLine(d.Key + " " + d.Value);
            }
        }
    }
}

आउटपुट

ListDictionary तत्व...
1 SUV
2 Sedan
3 Utility Vehicle
4 Compact Car
5 SUV
6 Sedan
7 Utility Vehicle
8 Compact Car
9 Crossover
10 Electric Car
क्या ListDictionary का आकार निश्चित है? = False
क्या ListDictionary रीड-ओनली है? = False
क्या ListDictionary सिंक्रनाइज़्ड है? = False
क्या ListDictionary में कुंजी K है? = False
क्या ListDictionary में कुंजी 9 है? = True
सिंक्रनाइज़्ड एक्सेस...
1 SUV
2 Sedan
3 Utility Vehicle
4 Compact Car
5 SUV
6 Sedan
7 Utility Vehicle
8 Compact Car
9 Crossover
10 Electric Car

उदाहरण 2: सरल सिंक्रनाइज़्ड एन्यूमरेशन

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

public class Demo {
    public static void Main() {
        ListDictionary dict = new ListDictionary();
        dict.Add("A", "Books");
        dict.Add("B", "Electronics");
        dict.Add("C", "Appliances");
        dict.Add("D", "Pet Supplies");
        dict.Add("E", "Clothing");
        dict.Add("F", "Footwear");

        Console.WriteLine("सिंक्रनाइज़्ड एक्सेस...");
        lock(dict.SyncRoot) {
            foreach(DictionaryEntry d in dict) {
                Console.WriteLine(d.Key + " " + d.Value);
            }
        }
    }
}

आउटपुट

सिंक्रनाइज़्ड एक्सेस...
A Books
B Electronics
C Appliances
D Pet Supplies
E Clothing
F Footwear

मुख्य बिंदु

  • SyncRoot केवल एन्यूमरेशन के लिए सिंक्रनाइज़ेशन प्रदान करता है।
  • संशोधन ऑपरेशन्स (Add, Remove, Clear) के लिए भी उसी लॉक का उपयोग करें।
  • उच्च समवर्ती परिदृश्यों के लिए ConcurrentDictionary का उपयोग करें।
  1. - C# में Tuple का दूसरा तत्व कैसे प्राप्त करें?

    उदाहरण C# में Tuple क्लास का उपयोग करके एक टपल बनाया जा सकता है। टपल के प्रत्येक तत्व को Item1, Item2, Item3 आदि प्रॉपर्टीज़ के माध्यम से एक्सेस किया जाता है। दूसरा तत्व प्राप्त करने के लिए Item2 प्रॉपर्टी का उपयोग करें। using System; public class Demo { public static void Main(String[] args) {

  1. - C# में Tuple का तीसरा तत्व कैसे प्राप्त करें?

    उदाहरण C# में Tuple का तीसरा तत्व Item3 प्रॉपर्टी के माध्यम से एक्सेस किया जाता है। इस उदाहरण में दो समान टपल बनाए गए हैं और उनके विभिन्न तत्व प्रिंट किए गए हैं। using System; public class Demo { public static void Main(String[] args) { var tuple1 = Tuple.Create(75, 200, 500, 700, 100,

  1. - C# में Tuple का छठा तत्व कैसे प्राप्त करें?

    उदाहरण C# में Tuple का छठा तत्व Item6 प्रॉपर्टी के माध्यम से एक्सेस किया जाता है। यह उदाहरण 7 तत्वों वाले टपल के सभी तत्वों को प्रिंट करता है। using System; public class Demo { public static void Main(String[] args) { var tuple1 = Tuple.Create(75, 200, 500, 700, 100, 1200, 1500);