C# マルチキー辞書の実装方法
.NET Base Class Library (BCL) には組み込みのマルチキー辞書がありませんが、利用可能なオープン ソース オプションがいくつかあります。
タプルをキーとして使用する
一般的なアプローチは、タプルをキーとして使用することです。ただし、この方法にはいくつかの欠点があります:
カスタムタプル構造
これらの制限を回避するには、カスタムのタプル構造を定義できます。
<code class="language-csharp">public struct Tuple<T1, T2> { public readonly T1 Item1; public readonly T2 Item2; public Tuple(T1 item1, T2 item2) { Item1 = item1; Item2 = item2; } }</code>
これにより、不変性、事前に計算されたハッシュ コード、等価比較が提供されます。ベスト プラクティスは、最も特徴的なフィールドを最初の項目に入れることです。
ValueUtils ライブラリはより優れたハッシュ アルゴリズムを実装しています
ValueUtils ライブラリは、構造に対してより信頼性の高いハッシュ コードを作成できる FieldwiseHasher.Hash メソッドを提供し、タプルの GetHashCode 実装が不十分であるという問題を解決します。
名前付き値オブジェクトの可読性が向上します
ValueUtils では、複数フィールド キーで名前付きフィールドを使用することもできるため、コードの可読性が向上します。
<code class="language-csharp">sealed class MyValueObject : ValueObject<MyValueObject> { public DayOfWeek day; public string NamedPart; }</code>
このアプローチでは、適切なハッシュ コードを持つ名前付きタプルのネイティブ サポートが将来の C# バージョンで実装されるまで、値セマンティクスを持つデータは名前付きメンバーと正しいハッシュ コードの両方を持つことができます。
以上がC# でマルチキー辞書を効率的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。