2017-06-06 50 views
0

好的,所以我想製作一個簡單的祕密聖誕老人程序,他們鍵入他們的名字,然後將他們從arraylist中刪除,然後隨機化arraylist並將文本輸出到文本框,或者我應該說,我需要它。Arraylist用戶選擇器

private void button1_Click(object sender, EventArgs e) 
{ 
    ArrayList NameSel = new ArrayList(); 
    NameSel.Add("name1"); 
    NameSel.Add("name2"); 
    NameSel.Add("name3");; 
    if (textBox1.Text == "name1") 
    { 
     NameSel.Remove("name1"); 
     Random rand = new Random(); 
     int randoms = rand.Next(NameSel.Count); 
     string textbox = NameSel[randoms]; 
     textBox2.Text = textbox; 
    } 

問題在於在textbox,特別是 「NameSel[randoms];」。

無法將類型'object'隱式轉換爲'string'。一個顯式轉換存在(是否缺少強制轉換?)

我不同意的ArrayList在所有的工作,爲了這個,我通常是一個字符串,例如

string[] names = new string[] 
{ 
    "name1", 
    "name2", 
    "name3", 
}; 

而且我測試,以及作品,但據我所知,我不能使用stringname.remove("name1")或任何等價物,所以我超出了我的舒適區域,任何不會大量編輯原始代碼的幫助都會被讚賞!

+1

請勿粘貼錯誤截圖。這對我們讀這個問題的人來說是非常不方便的,而且這是不可搜索的。請將錯誤消息的文本粘貼到您的問題中。 –

回答

0

不要使用ArrayList!

一個ArrayList可以有什麼在裏面。你需要一個通用的List<string>。它的工作原理幾乎完全一樣,但只會讓你放入字符串,因此不會讓你做投射。

此外,用於分配的祕密聖誕老人的名字更好和更簡單的方法是一次洗牌的列表(和一次,所以不要以此作爲現有方法的一部分),然後分配給每個人的人誰在名單後面(或之前,如果你喜歡)。還要將名單末尾的人員分配給開始時的人員。這確保每個人都有一個人分配給他們,並且每個人都被分配給某人。

+0

謝謝,它工作得很好,並且是一個快速編輯,謝謝! – Micha

0

你的錯誤輸出是很能說明問題,它說明你需要轉換成String,如果你正試圖從你的列表拉一個值,並將其賦值給一個字符串引用變量。

I.E. string textbox = (string)NameSel[randoms];

在首先聲明ArrayList時,您還應該能夠利用泛型。新ArrayList<String>()。這樣程序就知道你需要一個字符串vs對象的集合(然後不需要強制轉換)。

+0

問題標記爲C#標記。 –