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

C#でHashtableが読み取り専用かどうかを確認する方法

C#のHashtableクラスでは、IsReadOnlyプロパティを使用することで、そのHashtableが読み取り専用かどうかを簡単に確認できます。このプロパティは、Hashtableが読み取り専用であれば true、読み書き可能であれば false を返します。

また、IsFixedSizeプロパティを使えば、Hashtableが固定サイズかどうかも同様に確認できます。

Hashtableが読み取り専用かどうかを確認する例

以下のコード例では、Hashtableを作成して複数の要素を追加した後、IsReadOnlyプロパティとIsFixedSizeプロパティの値を出力しています。

using System;
using System.Collections;

public class Demo {
   public static void Main(){
      Hashtable hash = new Hashtable();
      hash.Add("One", "Katie");
      hash.Add("Two", "John");
      hash.Add("Three", "Barry");
      hash.Add("Four", "");
      hash.Add("Five", "Harry");
      hash.Add("Six", "F");
      hash.Add("Seven", "Tom");
      hash.Add("Eight", "Andy");
      hash.Add("Nine", "I");
      hash.Add("Ten", "Tim");

      Console.WriteLine("Hashtableのキーと値のペア...");
      foreach(DictionaryEntry entry in hash){
         Console.WriteLine("{0} と {1}", entry.Key, entry.Value);
      }

      Console.WriteLine("Hashtableは固定サイズですか? = " + hash.IsFixedSize);
      Console.WriteLine("Hashtableは読み取り専用ですか? = " + hash.IsReadOnly);
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Hashtableのキーと値のペア...
One と Katie
Ten と Tim
Five と Harry
Three と Barry
Seven と Tom
Two と John
Four と 
Eight と Andy
Nine と I
Six と F
Hashtableは固定サイズですか? = False
Hashtableは読み取り専用ですか? = False

別の例

続いて、数値をキーとして使用した別の例を見てみましょう。

using System;
using System.Collections;

public class Demo {
   public static void Main(){
      Hashtable hash = new Hashtable();
      hash.Add("1", "A");
      hash.Add("2", "B");
      hash.Add("3", "C");
      hash.Add("4", "D");
      hash.Add("5", "E");
      hash.Add("6", "F");
      hash.Add("7", "G");
      hash.Add("8", "H");
      hash.Add("9", "I");
      hash.Add("10", "J");

      Console.WriteLine("Hashtableのキーと値のペア...");
      foreach(DictionaryEntry entry in hash){
         Console.WriteLine("{0} と {1}", entry.Key, entry.Value);
      }

      Console.WriteLine("Hashtableは固定サイズですか? = " + hash.IsFixedSize);
      Console.WriteLine("Hashtableは読み取り専用ですか? = " + hash.IsReadOnly);
   }
}

出力結果

実行すると、以下のような結果が出力されます。

Hashtableのキーと値のペア...
10 と J
1 と A
2 と B
3 と C
4 と D
5 と E
6 と F
7 と G
8 と H
9 と I
Hashtableは固定サイズですか? = False
Hashtableは読み取り専用ですか? = False

ポイント解説

  • IsReadOnlyプロパティ: Hashtableが読み取り専用の場合は true、それ以外は false を返します。
  • IsFixedSizeプロパティ: Hashtableが固定サイズの場合は true、可変サイズの場合は false を返します。
  • 要素の表示順序について: Hashtableは内部的にハッシュテーブル構造を採用しているため、要素を追加した順序どおりには表示されません。出力順序は保証されない点に注意してください。
  • 読み取り専用のHashtableを作成するには: 通常のHashtableは既定で読み書き可能なため、IsReadOnlyfalse を返します。読み取り専用のラッパーを作成したい場合は、静的メソッド Hashtable.ReadOnly(hash) を使用します。
  1. C#で配列が読み取り専用(ReadOnly)かどうかを確認する方法

    C#で配列が読み取り専用(Read-Only)かどうかを確認するには、IsReadOnly プロパティを使用します。このプロパティは、配列が読み取り専用であれば true、書き込み可能であれば false を返します。 あわせて覚えておきたいのが IsFixedSize プロパティです。通常の配列は常に固定サイズ(true)ですが、読み取り専用とは限りません。配列を読み取り専用にしたい場合は、Array.AsReadOnly メソッドを使ってラップする必要があります。 それでは、実際のコード例を見ていきましょう。 例1:空の配列の場合 using System; public class

  2. C#で読み取り専用プロパティ(readonly)を追加する方法をわかりやすく解説

    C#では、readonlyキーワードを使ってフィールドを読み取り専用にすることができます。readonlyが付いたフィールドは、オブジェクトの構築時に一度だけ値を設定でき、その後は変更することができません。変更しようとするとコンパイルエラーが発生します。ここでは、C#で読み取り専用のフィールドやプロパティを扱う方法について、具体例を交えながら詳しく解説します。readonlyフィールドの基本的な使い方まずは、readonlyフィールドを持つクラスの例を見てみましょう。class Employee { readonly int salary; Employee(int sala