1

現在、私はこれを持っています:

Random random = new 
random.Next(1, strings.Items.Count);
strings.Select();
strings.SelectedItem = strings.Items[Convert.ToInt32(random)];
var str = strings.SelectedItem;
if (str == "stuff")
{
  //Here
}

出力にエラーはありませんが、テストしても実行されません。InvalidCastExceptiontype のオブジェクトを type にキャストできなかったという が表示さSystem.RandomれますSystem.IConvertible

このエラーは何を意味し、どうすれば修正できますか?

4

2 に答える 2

3

元のコードはコンパイルされません (new Random();最初の行を見逃しています)。そのはず:

Random random = new Random();
int randomNumber  = random.Next(1, strings.Items.Count);
strings.Select();
strings.SelectedItem = strings.Items[randomNumber];
var str = strings.SelectedItem;
if (str == "stuff")
{
    //Here
}

オブジェクトを intに変換しようとする次の行で例外が発生していますが、これはrandom実行できないため、例外が発生しています。

strings.Items[Convert.ToInt32(random)]

string.Itemsオブジェクトに基づいてインデックスを作成するのは間違っていrandomます。randomオブジェクト自体ではなく、オブジェクトによって返される乱数である必要があります。

于 2012-08-02T04:34:38.120 に答える
1

コードを次のように変更します。

Random random = new 
int rnd = random.Next(1, strings.Items.Count);
strings.Select();
strings.SelectedItem = strings.Items[rnd];
var str = strings.SelectedItem;
if (str == "stuff")
{
  //Here
}
于 2012-08-02T04:30:33.893 に答える