2014-12-04 64 views
0
class City 
{ 
    string name; 

    public string getName() 
    { 
     return name; 
    } 

    public void setName(String value) 
    { 
     name = value; 
    } 
} 

static void Main(string[] args) 
{ 
    City[] arr = new City[1]; 
    arr[0].setName("New York"); 
} 

問題是我得到「System.NullReferenceException」,「對象引用未設置爲對象的實例」。在我給紐約定名的路線上。如果我做的:C#對象數組,無法設置值

City city = new City(); 
city.setName("New York"); 

我沒有得到任何錯誤,但我想用一個數組,因爲我會加入更多的對象。在C#中這是可能的,因爲它在C++中?正在申報5個對象,設置它們的名稱,然後創建一個數組,並把它們內部的唯一途徑?

+1

你定義數組,但你必須初始化的對象太 – 2014-12-04 15:18:51

+0

對於重複的,見'Array'和'陣列Elements'。 – 2014-12-04 15:20:10

+1

在一個側面說明,你應該考慮使用'Name' [屬性](http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx),而不是'getName'和'setName'方法。 – juharr 2014-12-04 15:30:11

回答

3

你正在創建一個空數組。您必須在分配對象之前初始化對象:

City[] arr = new City[1]; 
arr[0] = new City(); 
arr[0].setName("New York"); 
+0

感謝。猜猜它是某種節省內存,不申報的所有對象,除非我實際聲明和使用它們。 – user2765257 2014-12-04 15:36:58

+0

@ user2765257這是因爲有時在要放入數組的類中不存在空構造函數。這就是爲什麼你必須手動調用它。 – 2014-12-04 15:38:41

1

此行僅創建一個包含一個元素的數組。

City[] arr = new City[1]; 

該元素爲空。

你需要給它分配一個值

arr[0] = new City(); 

然後你就可以訪問它。

arr[0].setName("New York");