2013-09-08 4 views
-1

Все еще изучая C# и возившись с GUI, я столкнулся с этой проблемой, и я снова и снова просматривал код и не понимаю, почему мой класс Order не будет создан. Evrything выглядит хорошо для меня. Есть ли базовая концепция, которую я здесь отсутствует?объект класса Order не создается.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     newOrder = new Order(); 
     for (int i = 0; i < newOrder.menuEntree.Length; i++) 
     { 
      this.listBox.Items.Add(newOrder.menuEntree[i]); 
     } 
    } 
    private void listBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     newOrder.Entree = this.listBox.Text; 
    } 
    public class Order 
    { 
     public string[] pastryEntree = new string[] { "Baklava", "Croissant", "Blueberry Muffin" }; 
     public decimal[] pastryPrice = new decimal[] { 3.00m, 2.50m, 1.75m }; 

     private string entree; 
     private decimal entreePrice; 

     public Order() 
     { 
      entree = ""; 
      entreePrice = 0; 
     } 

     public string Entree 
     { 
      get 
      { 
       return entree; 
      } 
      set 
      { 
       entree = value; 
       SetEntreePrice(); 
      } 
     } 
     public decimal EntreePrice 
     { 
      get 
      { 
       return entreePrice; 
      } 
     } 
     public void SetEntreePrice() 
     { 
      for (int i = 0; i < pastryPrice.Length; i++) 
      { 
       if (pastryEntree[i] == entree) 
       { 
        entreePrice = pastryPrice[i]; 
       } 
      } 
     } 
    } 
} 

}

+0

это 'newOrder = new Order();' должно быть 'Order newOrder = new Order();' –

+3

Где объявлена ​​переменная 'newOrder'? Как строка 'newOrder = new Order();' даже компилируется без типа? Это должно быть 'Order newOrder = new Order();' или 'var newOrder = new Order();' –

+0

@CharlesBretana Я чувствую себя немым ... Im 3 месяца на изучение моего первого языка программирования, C#, и мне все еще хочется Я ничего не знаю ... Это имеет смысл. – Zoro

ответ

0

Вы не определили newOrder в качестве члена вашей Form1 класса, и поэтому переменная необъявленная при попытке создать его экземпляр.

public partial class Form1 : Form 
{ 
    Order newOrder; 

    .... 

} 
0

Вы можете заменить это:

private void Form1_Load(object sender, EventArgs e) 
{ 
    newOrder = new Order(); 
    for (int i = 0; i < newOrder.menuEntree.Length; i++) 
    { 
     this.listBox.Items.Add(newOrder.menuEntree[i]); 
    } 
} 

с

private void Form1_Load(object sender, EventArgs e) 
{ 

    for (int i = 0; i < newOrder.menuEntree.Length; i++) 
    { 
     Order newOrder = new Order(); 
     this.listBox.Items.Add(newOrder.menuEntree[i]); 
    } 
} 

Вполне вероятно, что вы хотите объявить заказ в течение петли. В противном случае все заказы будут одного и того же экземпляра.

+0

Весьма маловероятно, что OP захочет, чтобы это было объявлено в локальной области вообще. – Rotem