.NET では、任意の文字列を辞書キーとして使用できますか? これはテンプレート エンジンの一部であり、ユーザーがカスタム ヘッダーと値を追加できるようにする予定です。
ヘッダーは「X の値」とか「分析結果と XYZ のレポートの概要」のようなものになりますが、レア キャラクターで例外が発生しないか心配です。
サイズ制限はあると思いますが、256 文字を超えると予想されます。MSDN には、この件に関する詳細はありません。
.NET では、任意の文字列を辞書キーとして使用できますか? これはテンプレート エンジンの一部であり、ユーザーがカスタム ヘッダーと値を追加できるようにする予定です。
ヘッダーは「X の値」とか「分析結果と XYZ のレポートの概要」のようなものになりますが、レア キャラクターで例外が発生しないか心配です。
サイズ制限はあると思いますが、256 文字を超えると予想されます。MSDN には、この件に関する詳細はありません。
ディクショナリには、キーと値として使用される型に関する特別な知識はありません。オブジェクトの種類に関係なく、メソッドGetHashCode
とEquals
メソッドを呼び出すだけで、値を正しいバケットに入れ、再度取得できるようになります。つまり、これらのメソッドを正しく実装する任意のクラスをキーとして使用できます。
クラスはそのstring
値に基づいてこれらのメソッドを正しく実装するため、文字列のインスタンスを構築できる限り、それをキーとして使用できます。
はい、任意の有効な文字列を使用できます (数十億バイトに制限されています)。
ところで、最大制限を必要とする可能性IEqualityComparer<T>
のあるコンストラクターに渡す可能性のあるカスタムを渡す場合があります。Dictionary
キーは単なる .NET 文字列であるため、関連する SO の質問: .NET 文字列の最大可能長は何ですか?を参照してください。