0

以前にも同様の質問をしたことがありますが、それはリストの場合を除きますが、ここのメンバーが辞書を使用することを勧めたので、辞書を使用することにしました。元のリンクはこちらです。

キューのリスト内の特定の場所に値を追加する

そのため、辞書の特定の場所に新しいプロセスを追加しようとしています。

rr_dict[Int32.Parse(priority_add_textbox.Text)].Add(new process {
      Proc_Id = sjf_queue.Size + 1,
      Proc_BurstTime = Int32.Parse(time_add_texbox.Text),
      Proc_Priority = Int32.Parse(priority_add_textbox.Text)
});

これが発生すると、エラーが発生します。

タイプ 'System.Collections.Generic.KeyNotFoundException' の未処理の例外が mscorlib.dll で発生しました

追加情報: 指定されたキーがディクショナリに存在しませんでした。

誰かが私が何をする必要があるか知っていますか?

4

3 に答える 3

2

普通Dictionaryは順不同です。その各エントリは、順序が未定義のキーと値のペアとして返されます。

順序も考慮したディクショナリが必要な場合は、OrderedDictionary.

現在のコードでは、指定されたエントリを追加するのではなく、キー エントリにアクセスしようとします (これがあなたがやろうとしていることです)。

于 2013-10-10T20:29:57.270 に答える
0

取得しているエラーItemは、辞書のプロパティが原因です。辞書内の特定の場所 (つまり、 の結果) にアクセスしようとしていますInt32.Parse(priority_add_textbox.Text)。存在しない場合は、最初に作成する必要があります。このようなもの:

rr_dict[Int32.Parse(priority_add_textbox.Text)] = new Queue<process>();
于 2013-10-10T20:32:24.140 に答える