C#에서 HybridDictionary가 읽기 전용(Read-Only)인지 확인하려면 IsReadOnly 속성을 사용합니다. 이 속성은 컬렉션이 수정 가능한 상태인지, 아니면 읽기 전용으로 잠겨 있는지를 Boolean 값(True/False)으로 반환합니다.
아래 예제 코드를 통해 HybridDictionary의 읽기 전용 여부뿐만 아니라 고정 크기(IsFixedSize) 및 동기화(IsSynchronized) 상태도 함께 확인할 수 있습니다.
예제 1
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 elements...");
foreach(DictionaryEntry d in dict1) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Is the HybridDictionary1 having fixed size? = "+dict1.IsFixedSize);
Console.WriteLine("If HybridDictionary1 read-only? = "+dict1.IsReadOnly);
Console.WriteLine("Is HybridDictionary1 synchronized = "+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 elements...");
foreach(DictionaryEntry d in dict2) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Is HybridDictionary1 equal to HybridDictionary2? = "+(dict1.Equals(dict2)));
Console.WriteLine("Is the HybridDictionary2 having fixed size? = "+dict2.IsFixedSize);
Console.WriteLine("If HybridDictionary2 read-only? = "+dict2.IsReadOnly);
Console.WriteLine("Is HybridDictionary2 synchronized = "+dict2.IsSynchronized);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
HybridDictionary1 elements... A Books B Electronics C Smart Wearables D Pet Supplies E Clothing F Footwear Is the HybridDictionary1 having fixed size? = False If HybridDictionary1 read-only? = False Is HybridDictionary1 synchronized = False HybridDictionary2 elements... 1 One 2 Two 3 Three 4 Four 5 Five 6 Six Is HybridDictionary1 equal to HybridDictionary2? = False Is the HybridDictionary2 having fixed size? = False If HybridDictionary2 read-only? = False Is HybridDictionary2 synchronized = False
결과 분석
두 개의 HybridDictionary 모두 IsReadOnly 속성이 False로 출력되었습니다. 이는 해당 컬렉션에 요소를 추가하거나 제거하는 등의 수정 작업이 가능하다는 의미입니다. 또한 고정 크기 여부와 동기화 여부도 모두 False로 나타나, 일반적인 가변 크기의 비동기화 컬렉션임을 알 수 있습니다.
예제 2
이번에는 하나의 HybridDictionary만 사용하여 각 속성 값을 확인해 보겠습니다.
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary dict = new HybridDictionary();
dict.Add("1", "Finance");
dict.Add("2", "Marketing");
dict.Add("3", "IT");
dict.Add("4", "Operations");
dict.Add("5", "Purchase");
Console.WriteLine("HybridDictionary elements...");
foreach(DictionaryEntry d in dict) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Is the HybridDictionary having fixed size? = "+dict.IsFixedSize);
Console.WriteLine("If HybridDictionary read-only? = "+dict.IsReadOnly);
Console.WriteLine("Is HybridDictionary synchronized = "+dict.IsSynchronized);
}
}출력 결과
HybridDictionary elements... 1 Finance 2 Marketing 3 IT 4 Operations 5 Purchase Is the HybridDictionary having fixed size? = False If HybridDictionary read-only? = False Is HybridDictionary synchronized = False
정리
HybridDictionary는 요소 수가 적을 때는 ListDictionary처럼 동작하고, 요소 수가 많아지면 Hashtable로 자동 전환되는 특수한 컬렉션입니다. 기본적으로 생성된 HybridDictionary는 항상 수정 가능한 상태이므로 IsReadOnly 속성은 False를 반환합니다. 읽기 전용 래퍼로 감싸지 않는 한 이 값은 True가 되지 않으며, 이 속성을 활용하면 컬렉션을 변경하기 전에 안전하게 상태를 검사할 수 있습니다.