2013-10-11 68 views
0

C#编程类 typeObject [] array = new typeObject [5]; 此外,typeObject有一个构造函数,它接受一个整数。 如何使用不同的整数调用每个对象,而不是使用默认构造函数? 谢谢。声明一个具有不同参数的对象数组

+0

我的意思是将数组的每个索引声明为构造函数的不同传递参数。基本上我想要的是array [1] = new typeObject(3); array [2] = new typeObject(15); ... –

回答

3

您既可以构建直接在数组中的元素:

typeObject[] array = new typeObject[5]; 
array[0] = new typeObject(1); 
array[1] = new typeObject(2); 

,或者您可以使用数组的初始化:

typeObject[] array = new typeObject[]{new typeObject(1), new typeObject(2), ... new typeObject(5)}; 
+0

对于第一个选项,第一个语句不会用默认构造函数声明所有对象吗?谢谢@William –

+0

@LeonardLie在第一个代码示例中,数组的每个元素都将初始化为'typeObject'的默认值。如果这是一个类,那么每个元素将是空的。如果这是一个结构,例如一个'DateTime',那么它大致等同于调用结构体的无参数构造函数 - 虽然实际上无法为一个结构体定义一个自定义无参数构造函数,但编译器为您提供了它。 –

1

没有什么错误使用您在comment引代码:

typeObject[] array = new typeObject[5]; 
array[0] = new typeObject(7); // note: array indexes start at 0 
array[1] = new typeObject(3); 
array[2] = new typeObject(15); 
... 

但是如果你想要做一个声明,你可以al方式使用数组初始化语法:

typeObject[] array = new typeObject[] 
{ 
    new typeObject(7), 
    new typeObject(3), 
    new typeObject(15), 
}; 
+0

谢谢。那么,第二个代码中的第一个语句不会调用typeObject类的默认构造函数? @ p.s.w.g –

+0

@LeonardLie第二个代码块只包含一条语句,它使用指定的构造函数(不是无参数的)构造* N *对象,并初始化一个包含这些对象作为元素的新数组。 –

+0

不,它只是创建数组。在用新的typeObject()语句初始化之前,数组的元素是空的。 –

相关问题