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

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

HashtableクラスのItemプロパティとは

C#のHashtableクラスにおけるItemプロパティは、指定したキーに関連付けられた値を取得または設定するためのプロパティです。C#ではインデクサとして実装されているため、ht[key]というシンプルな形式で直感的にアクセスできます。

このプロパティの大きな特徴は、既存要素の読み書きだけでなく、新しい要素の追加にも利用できる点です。

存在しないキーで新規要素を追加する方法

指定したキーがHashtable内にまだ存在しない場合でも、次のように代入文を書くだけで、そのキーと値が新しい要素として自動的に登録されます。

myCollection["myNonexistentKey"] = myValue;

サンプルコード

以下は、C#でHashtableクラスのItemプロパティを使用する例です。Add()メソッドで3つの要素を追加した後、Itemプロパティを使って「Four」というキーの要素を追加し、すべてのキーと値を出力しています。

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");

         // Itemプロパティを使って新しい要素を追加
         ht["Four"] = "David";

         ICollection key = ht.Keys;
         foreach (string k in key) {
            Console.WriteLine(k + ": " + ht[k]);
         }
         Console.ReadKey();
      }
   }
}

実行結果

Three: Raman
Four: David
One: Amit
Two: Aman

補足:要素の順序について

Hashtableはハッシュアルゴリズムによって内部でデータを管理しているため、出力されるキーの順序は追加した順番とは一致しません。上記の実行結果を見ても、要素がバラバラの順序で表示されていることが確認できます。

もし挿入した順序を保持したい場合は、ジェネリックコレクションであるDictionary<TKey, TValue>の利用や、順序付きの専用クラスの検討をおすすめします。また、現在のC#開発では型安全なDictionaryが推奨される場面が多くなっていますが、非ジェネリックなHashtableは従来のコードや特定のケースで今も有効です。

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

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

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

    ArrayListクラスのCapacityプロパティは、そのArrayListが格納できる要素の数を取得または設定するためのプロパティです。Capacity(容量)は、実際に格納されている要素数を表すCount(カウント)よりも常に大きいか等しい値になります。Capacityプロパティへのアクセスは以下のように記述します。arrList.Capacity容量の仕組みArrayListの既定の容量は4です。要素を追加していき、既定の容量を超えると、容量は自動的に2倍に拡張されます。例えば、5つの要素を追加した場合、容量は8に拡張されます。以降も同様に、容量を超えた時点で順次2倍ずつ拡張されていき