2013-08-20 110 views
1

我很新,因爲你可以在我的編程中看到,我正在做一個簡單的程序練習。我想舉例子Item.price & Item.Name到Listbox2中。列表名稱到變量c#

是否可以將arrayName放入一個變量並放入foreach循環中? 只是爲了防止一個非常長的IF循環或開關,或一個while循環。

For example : 
    Array variable = Drinks; 
    foreach(Product item in VARIABLE) 
         { 
          listBox2.Items.Add(item.ProductName + item.Price); 
         } 

PS:我已經與你放置drinkList到臨時列表,然後把它叫做product.Name和/或Product.price的臨時列表tryed。

public partial class Form1 : Form 
{ 
    List<Product> Drinks = new List<Product>() {new Product("Coca Cola", 1.2F), new Product("Fanta", 2.0F), new Product("Sprite", 1.5F) }; 
    List<Product> Bread = new List<Product>() { new Product("Brown Bread", 1.2F), new Product("White Bread", 2.0F), new Product("Some otherBread", 1.5F) }; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     listBox1.Items.Clear(); 

     if (comboBox1.Items.IndexOf(comboBox1.SelectedItem) == 0) 
     { 
      foreach (Product item in Drinks) 
      { 
       listBox1.Items.Add(item.ProductName); 
      } 
     } 
     else 
     { 
      foreach (Product item in Bread) 
      { 
       listBox1.Items.Add(item.ProductName); 
      } 
     } 
    } 

    private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e) 
    { 
     // do something here 
    } 
} 

public class Product 
{ 
    private string productName; 
    private float price; 

    public Product(string productName, float price) 
    { 
     this.ProductName = productName; 
     this.Price = price; 
    } 

    public string ProductName 
    { 
     get { return productName; } 
     set { productName = value; } 
    } 

    public float Price 
    { 
     get { return price; } 
     set { price = value; } 
    } 
} 
+0

你得到了什麼錯誤? – SolarBear

+0

無,我只是試圖找到一種新的方法來使我的代碼語法更小,更高效。 – mrName

+5

既然你不想解決一個特定的問題,你可以在http://codereview.stackexchange.com上發佈更好的答案。 –

回答

0

我不知道你在找什麼,但也許你可以把產品類型(飲料或麪包)放在結構中?

public struct Products 
{ 
    public string type; 
    public string name; 
    public double price; 
} 

然後,您可以創建列表

List<Products> 

,當你在你的例子一樣使用它在你的foreach循環

0

這聽起來像你要找的是什麼:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    listBox1.Items.Clear(); 

    // start with Bread and change if necessary. 
    List<Product> products = Bread; 

    if (comboBox1.Items.IndexOf(comboBox1.SelectedItem) == 0) 
    { 
     //change the value of "products" 
     products = Drinks; 
    } 

    foreach (Product item in products) 
    { 
     listBox1.Items.Add(item.ProductName + item.Price); 
    } 

}