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.


   }
}

现在我要做的是在所有客户实例中一一填充对象数组中的数据变量

请帮助我,因为我是初学者

4

2 回答 2

0

cust[0]为空,因此在为其分配值之前尝试访问他的属性或方法之一将导致此异常。

您的主要误解 - 通过初始化 cust 您没有初始化其中的任何一个对象( cust[i] 对于每个 i 都将为空)。

您需要在使用它之前对其进行验证:

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 } );
  }
} 

您应该看到两条新闻,一条针对集合,一条针对插入集合中的每个(引用)对象。

于 2013-10-06T18:53:59.183 回答