8

.NET では、任意の文字列を辞書キーとして使用できますか? これはテンプレート エンジンの一部であり、ユーザーがカスタム ヘッダーと値を追加できるようにする予定です。

ヘッダーは「X の値」とか「分析結果と XYZ のレポートの概要」のようなものになりますが、レア キャラクターで例外が発生しないか心配です。

サイズ制限はあると思いますが、256 文字を超えると予想されます。MSDN には、この件に関する詳細はありません。

4

3 に答える 3

9

ディクショナリには、キーと値として使用される型に関する特別な知識はありません。オブジェクトの種類に関係なく、メソッドGetHashCodeEqualsメソッドを呼び出すだけで、値を正しいバケットに入れ、再度取得できるようになります。つまり、これらのメソッドを正しく実装する任意のクラスをキーとして使用できます。

クラスはそのstring値に基づいてこれらのメソッドを正しく実装するため、文字列のインスタンスを構築できる限り、それをキーとして使用できます。

于 2009-05-17T10:25:26.177 に答える
7

はい、任意の有効な文字列を使用できます (数十億バイトに制限されています)。

ところで、最大制限を必要とする可能性IEqualityComparer<T>のあるコンストラクターに渡す可能性のあるカスタムを渡す場合があります。Dictionary

于 2009-05-17T10:11:34.477 に答える
1

キーは単なる .NET 文字列であるため、関連する SO の質問: .NET 文字列の最大可能長は何ですか?を参照してください。

于 2009-05-17T10:16:22.780 に答える