2014-12-04 61 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");