C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のHashtableクラスにおけるIsReadOnlyプロパティとは?使い方を解説

C#のHashtableクラスには、コレクションの状態を確認するための便利なプロパティが多数用意されています。そのひとつがIsReadOnlyプロパティです。

このプロパティは、対象のHashtableが読み取り専用(Read-Only)かどうかを示すbool値を取得します。読み取り専用の場合はtrue、要素の追加や変更が可能な場合はfalseを返します。

IsReadOnlyプロパティの使用例

以下のコードでは、3つの要素を持つHashtableを作成し、IsReadOnlyプロパティの値をコンソールに出力しています。

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

コードの解説

まず、Addメソッドを使ってHashtableに3つのキーと値のペアを追加しています。

ht.Add("One", "Amit");
ht.Add("Two", "Aman");
ht.Add("Three", "Raman");

その後、IsReadOnlyプロパティを参照して、Hashtableが読み取り専用かどうかをチェックします。

Console.WriteLine("IsReadOnly = " + ht.IsReadOnly);

実行結果はFalseとなり、このHashtableが読み取り専用ではなく、要素の追加・変更・削除が可能であることがわかります。

補足:IsReadOnlyプロパティのポイント

  • 戻り値の型: bool型で、読み取り専用ならtrue、そうでなければfalseを返します。
  • 通常のHashtable: new Hashtable()で作成したインスタンスは読み取り専用ではないため、常にfalseを返します。
  • 読み取り専用ラッパー: Hashtable.ReadOnly(ht)メソッドを使うと、元のHashtableを読み取り専用のラッパーとして扱え、その場合IsReadOnlyはtrueを返します。
  • 用途: コレクションを変更する前に読み取り専用かどうかを判定することで、意図しない例外(NotSupportedException)の発生を防ぐことができます。
  1. C#のBitArrayクラスでCountプロパティを使って要素数を取得する方法

    C#のBitArrayクラスにおけるCountプロパティとは?C#のBitArrayクラスは、ビット値(true/false)のコレクションを管理するためのクラスです。このクラスには、Countプロパティが用意されており、これを使うことでBitArrayに含まれる要素(ビット)の総数を簡単に取得できます。なお、BitArrayクラスのCountプロパティは、Lengthプロパティと同じ値を返します。どちらを使用しても要素数は同じになります。BitArrayクラスのインスタンスを作成するまずは、BitArrayクラスのインスタンスを作成しましょう。以下の例では、10個の要素を持つBitArray

  2. C#のSortedListクラスのCapacityプロパティとは?意味と使い方を解説

    C#のSortedListクラスにおけるCapacityプロパティとはSortedListクラスのCapacity(容量)プロパティは、SortedListが保持できる要素数の最大サイズを示すプロパティです。つまり、内部的に確保されている配列が格納できる要素の総数を表しています。なお、SortedListの既定の容量(デフォルト値)は16に設定されています。要素を追加していき容量を超えると、容量は自動的に拡張される仕組みになっています。以下のコードを実行すると、C#でSortedListクラスのCapacityプロパティを実際に確認できます。コード例using System; using Sy