Check if ListDictionary is synchronized in C#

The ListDictionary class in C# provides the IsSynchronized property to check if the collection is synchronized (thread-safe). By default, ListDictionary is not synchronized, meaning it is not thread-safe for concurrent access by multiple threads.

Syntax

Following is the syntax to check if a ListDictionary is synchronized −

bool isSynchronized = listDictionary.IsSynchronized;

Return Value

The IsSynchronized property returns a bool value −

  • true − if the ListDictionary is synchronized (thread-safe)

  • false − if the ListDictionary is not synchronized (not thread-safe)

Example

The following example demonstrates how to check if a ListDictionary is synchronized −

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 elements...");
      foreach(DictionaryEntry d in dict) {
         Console.WriteLine(d.Key + " " + d.Value);
      }
      
      Console.WriteLine("\nIs the ListDictionary having fixed size? = " + dict.IsFixedSize);
      Console.WriteLine("If ListDictionary read-only? = " + dict.IsReadOnly);
      Console.WriteLine("Is ListDictionary synchronized = " + dict.IsSynchronized);
      Console.WriteLine("The ListDictionary has the key K? = " + dict.Contains("K"));
      Console.WriteLine("The ListDictionary has the key 9? = " + dict.Contains("9"));
   }
}

The output of the above code is −

ListDictionary elements...
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

Is the ListDictionary having fixed size? = False
If ListDictionary read-only? = False
Is ListDictionary synchronized = False
The ListDictionary has the key K? = False
The ListDictionary has the key 9? = True

Using Multiple ListDictionary Objects

The following example shows checking the IsSynchronized property on multiple ListDictionary objects −

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

public class Demo {
   public static void Main() {
      ListDictionary dict1 = new ListDictionary();
      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("ListDictionary1 elements...");
      foreach(DictionaryEntry d in dict1) {
         Console.WriteLine(d.Key + " " + d.Value);
      }
      
      ListDictionary dict2 = new ListDictionary();
      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("\nListDictionary2 key-value pairs...");
      IDictionaryEnumerator demoEnum = dict2.GetEnumerator();
      while (demoEnum.MoveNext())
         Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
      
      Console.WriteLine("Is the ListDictionary having fixed size? = " + dict2.IsFixedSize);
      Console.WriteLine("If ListDictionary read-only? = " + dict2.IsReadOnly);
      Console.WriteLine("Is ListDictionary synchronized = " + dict2.IsSynchronized);
      Console.WriteLine("The ListDictionary has the key 5? = " + dict2.Contains("5"));
   }
}

The output of the above code is −

ListDictionary1 elements...
A Books
B Electronics
C Smart Wearables
D Pet Supplies
E Clothing
F Footwear

ListDictionary2 key-value pairs...
Key = 1, Value = One
Key = 2, Value = Two
Key = 3, Value = Three
Key = 4, Value = Four
Key = 5, Value = Five
Key = 6, Value = Six
Is the ListDictionary having fixed size? = False
If ListDictionary read-only? = False
Is ListDictionary synchronized = False
The ListDictionary has the key 5? = True

Thread Safety Considerations

Since ListDictionary is not synchronized by default, you should use external synchronization mechanisms when accessing the collection from multiple threads. For thread-safe operations, consider using ConcurrentDictionary<TKey, TValue> from the System.Collections.Concurrent namespace instead.

Conclusion

The IsSynchronized property of ListDictionary returns false by default, indicating that the collection is not thread-safe. For multi-threaded applications, use appropriate synchronization mechanisms or thread-safe alternatives like ConcurrentDictionary.

Updated on: 2026-03-17T07:04:36+05:30

147 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements