0
class Customer
{
 public string name;
 public sting nic;
 public int age;

 public void add_customer()
    {
        // some code here to assign the values to the data types
    }
}

class main_menu
{
   Customer[] cust = new Customer[100];
   // some other data members

   public void new_customer()
   {
      // Some Console.WriteLine pritings
      cust[0].add_customer();
      // ------>> Now here in this line error is arrising which says
      An unhandled exception of type 'System.NullReferenceException' occurred in   Assignment 2.exe

      Additional information: Object reference not set to an instance of an object.


   }
}

今私がやりたいことは、すべての顧客インスタンスでオブジェクトの配列にデータ変数を1つずつ入力することです

初心者なので教えてください

4

2 に答える 2

0

cust[0]null であるため、値を割り当てる前にプロパティまたはメソッドの 1 つにアクセスしようとすると、この例外が発生します。

主な誤解 - cust を初期化しても、その中のオブジェクトのいずれも初期化されませんでした ( cust[i] はすべての i に対して null になります)。

使用する前に検証する必要があります。

class main_menu
{
   Customer[] cust = new Customer[100];
   // some other data members

   public void new_customer()
   {
    cust[0] = new Customer();

      // when you want to use it later on, do this validation.
    if (cust[0] != null)
    {      
        cust[0].add_customer();
    }
   }
}
于 2013-10-06T18:50:59.563 に答える
0

コードで、100 個の顧客オブジェクトを保持するコレクションを生成し、最初の顧客のフィールドに入力しようとしていますが、コレクションにはまだ存在していません。C# では慣用的に、空のコレクションを生成し、このコレクションに完全に初期化された Customer オブジェクトを設定します。何かのようなもの:

public class main_menu
{
  List<Customer> customers = new List<Customer>(); // empty collection of Customer's
  public void new_customer(string name, string nickname, int age)
  {
    customers.Add( new Customer { name, nickname, age } );
  }
} 

2 つのニュースが表示されます。1 つはコレクション用で、もう 1 つはコレクションに挿入された (参照) オブジェクトのそれぞれです。

于 2013-10-06T18:53:59.183 に答える