私はIImmutableDictionary<int, MyType>
をC#で持っています。私のプログラムの実行中に、私はいくつかのコマンドに基づいてMyType
インスタンスを追加し、削除したいと思います:MyType
が追加されると新鮮なIDを確定的に取得する
public sealed class AddMyTypeCommand : ICommand
{
public readonly MyType myTypeToAdd;
// etc...
}
public sealed class RemoveMyTypeCommand : ICommand
{
public readonly int keyToRemove;
// etc...
}
、私は辞書にない新鮮なint
キーを生成したいと思います。
キーが削除され、後で再利用される可能性があるので、私はint
を使い果たしてしまわないと思います。
主なキャッチは、プロセスが確定的であることです。与えられたストリームICommand
の場合、コードは異なるマシンで同じコードを実行し、同じキーを生成する必要があります。
鍵生成ステップを達成するための、堅牢で維持可能かつ効率的なアプローチは何ですか?例えば
、遅いアプローチは次のようになります。新鮮なIDが見つかるまで上向きに歩く、int.MinValue
から始まります。
'GetHashCode()'を使用しますか? –
これらのids(つまり、1,2,3,4,5など)がidsを生成するための有効な要件はありますか? – Kolichikov
ハッシュコードまたはチェックサムが最初のアプローチですが、2つの異なるコマンドが同じキーを持つ可能性は低いです。 – Graffito