C#의 Hashtable 클래스에서 제공하는 IsReadOnly 속성은 해당 Hashtable이 읽기 전용인지 여부를 나타내는 값을 반환합니다. 이 속성을 활용하면 컬렉션에 대한 수정 작업이 가능한 상태인지 사전에 확인할 수 있어, 런타임 오류를 방지하는 데 유용합니다.
IsReadOnly 속성의 기본 개념
IsReadOnly 속성은 bool 타입의 값을 반환하며, 다음과 같은 의미를 가집니다.
- true: Hashtable이 읽기 전용이므로 요소 추가, 수정, 삭제가 불가능합니다.
- false: Hashtable이 읽기 전용이 아니므로 요소를 자유롭게 조작할 수 있습니다.
일반적으로 코드에서 직접 생성한 Hashtable은 읽기 전용이 아니므로 false가 반환됩니다. 반면, 읽기 전용 래퍼(Wrapper)로 감싼 경우에는 true가 반환됩니다.
예제 코드
using System;
using System.Collections;
namespace Demo {
class Program {
static void Main(string[] args) {
Hashtable ht = new Hashtable();
ht.Add("One", "Amit");
ht.Add("Two", "Aman");
ht.Add("Three", "Raman");
Console.WriteLine("IsReadOnly = " + ht.IsReadOnly);
Console.ReadKey();
}
}
}실행 결과
IsReadOnly = False
코드 설명
위 예제에서는 먼저 세 개의 요소를 가진 Hashtable을 생성했습니다.
ht.Add("One", "Amit");
ht.Add("Two", "Aman");
ht.Add("Three", "Raman");각 키("One", "Two", "Three")에 해당하는 값("Amit", "Aman", "Raman")이 저장되어 있습니다. 이후 IsReadOnly 속성을 사용하여 Hashtable의 읽기 전용 여부를 확인했습니다.
Console.WriteLine("IsReadOnly = " + ht.IsReadOnly);결과는 False로 출력됩니다. 이는 해당 Hashtable이 읽기 전용이 아니며, 필요에 따라 요소를 추가하거나 제거할 수 있음을 의미합니다.
활용 팁
IsReadOnly 속성은 데이터를 수정하기 전에 컬렉션의 상태를 검사하는 방어적 프로그래밍 기법으로 활용할 수 있습니다. 예를 들어, 외부에서 전달받은 Hashtable에 데이터를 추가하기 전에 IsReadOnly 값을 확인하면 NotSupportedException 예외 발생을 미리 차단할 수 있습니다.