2013-10-06 148 views
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

您不初始化'cust [0]'。嘗試'客戶[0] =新客戶()' –

+0

感謝它的工作。 但是,使用它的目的是什麼,因爲我想了解這種用法​​的背後邏輯。 –

+0

歡迎來到Stack Overflow!幾乎所有的'NullReferenceException'都是一樣的。請參閱「[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)」的一些提示。 –

回答

0

cust[0]爲空,因此在分配值之前試圖訪問他的屬性或方法之一會導致此異常。

你的主要誤解 - 通過初始化cust你沒有初始化它中的任何一個對象(cust [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(); 
    } 
    } 
} 
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 }); 
    } 
} 

您應該看到兩個消息,一個用於收集,以及一個爲每個(參考)對象插入到集合中。

+0

先生這個信息對我來說是新的..謝謝 但是,如果我想持有無限的客戶,而不是100? –

+0

然後數組不是您要使用的數據結構 - 列表更適合這種情況。 –