single.php

C# WinUI3で、HashSetクラスの使い道

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回は配列のようにHashSetクラスの変数のDictionary、Listクラスとの比較です。

[HashSet]クラス

HashSetクラスは、纏まった値を管理する配列のような変数を作成するクラスです。

例えば、私は画像形式ファイルの拡張子を管理する際に使っています。

HashSet<string> _imageExts = new HashSet<string>
{
    ".jpg",
    ".jpeg",
    ".png",
    ".webp",
    ".avif"
};

注意点としては、値の重複が許可されないために[Add]メソッドで同じ値を追加する際に無視されます。

その他に追加した値の順序も不定になるのも注意点です。

[Dictionary]、[List]などが配列を扱えるクラスとして存在しますが、私が他のクラスを利用する場合には、次の部分を考慮に入れています。

[List]クラス

値の重複が可能で、順序も保持したい場合は[List]クラスが利用できます。デメリットとして検索する速度などがトレードオフになります。

[Dictionary]クラス

[キー]と[値]の関係性を保持する場合には[Dictionary]クラスが利用できます。キーの重複を許可しないのは[HashSet]クラスと同じです。

[キー]と[値]の対を管理するために、1つの値のみを管理する場合は利用できません。

まとめ

今回は、短い記事ですが、列のようにHashSetクラスの変数のDictionary、Listクラスとの比較について紹介しました。

[HashSet]クラスを利用すると、まとまった値を管理することが可能です。

同様な[List]、[Dictionary]クラスがありますが、重複する値の許可や、値の数など管理する値の特徴で使い分けが可能です。

WinUI 3 アプリで、配列を管理するクラスを選ぶ参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です