Check if ListDictionary is read-only in C#

The ListDictionary class in C# provides an IsReadOnly property to check if the dictionary is read-only. This property returns false for a standard ListDictionary, as it allows adding, removing, and modifying elements. However, you can create read-only wrappers using collection utilities.

Syntax

Following is the syntax to check if a ListDictionary is read-only −

bool isReadOnly = listDictionary.IsReadOnly;

Using IsReadOnly Property

Example

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);
        }
        
        Console.WriteLine("Is the ListDictionary1 having fixed size? = " + dict1.IsFixedSize);
        Console.WriteLine("If ListDictionary1 read-only? = " + dict1.IsReadOnly);
        Console.WriteLine("Is ListDictionary1 synchronized = " + dict1.IsSynchronized);
        Console.WriteLine("The ListDictionary1 has the key M? = " + dict1.Contains("M"));
        
        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 ListDictionary2 having fixed size? = " + dict2.IsFixedSize);
        Console.WriteLine("If ListDictionary2 read-only? = " + dict2.IsReadOnly);
        Console.WriteLine("Is ListDictionary2 synchronized = " + dict2.IsSynchronized);
        Console.WriteLine("The ListDictionary2 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
Is the ListDictionary1 having fixed size? = False
If ListDictionary1 read-only? = False
Is ListDictionary1 synchronized = False
The ListDictionary1 has the key M? = False

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 ListDictionary2 having fixed size? = False
If ListDictionary2 read-only? = False
Is ListDictionary2 synchronized = False
The ListDictionary2 has the key 5? = True

Checking Multiple Properties

Example

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

Key Properties of ListDictionary

Property Description Typical Value
IsReadOnly Indicates if the dictionary is read-only False (modifiable)
IsFixedSize Indicates if the dictionary has a fixed size False (dynamic size)
IsSynchronized Indicates if access is synchronized (thread-safe) False (not thread-safe)

Conclusion

The IsReadOnly property of ListDictionary returns false by default, indicating that the dictionary can be modified. This property, along with IsFixedSize and IsSynchronized, helps determine the characteristics and capabilities of your ListDictionary instance.

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

184 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements