2012-08-02 41 views
1

目前,我有這樣的:如何從ListBox中獲得一個隨機項目,然後在C#中進行比較?

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 
} 

它好好嘗試一下輸出給任何錯誤,但是當我測試它,它不會運行。我得到一個InvalidCastException,說它無法將System.Random類型的對象轉換爲System.IConvertible類型。

這個錯誤是什麼意思,以及如何解決呢?

回答

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 
} 

你越來越上以下行,它試圖random對象轉換成整數的例外,那你不能這樣做,這就是爲什麼你所得到的例外。

strings.Items[Convert.ToInt32(random)] 

這是錯誤的基於random對象指數string.Items。它應該是由random對象返回的隨機數,而不是對象本身。

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 
} 
+0

那麼,原來的問題是什麼?爲什麼這段代碼解決了這個問題?好的答案需要*解釋*,這就是我們學習的東西,而不是僅僅複製和粘貼魔法代碼。 – 2012-08-02 04:53:25

相關問題