C#中把一个类定义为一个数组?

按照书上的做的,但是并没有太详细的解释,下面这句请教下:
Computer[] com = new Computer[3]
这个Computer是一个类,类里面有封装的字段 name dy id,分别是 名称 日期 id,然后分赋值
com[0].name = "惠普";
com[0].dy = "2009-10-5";

com[1].name = "戴尔";
com[1].dy = "2009-10-5";

com[2].name = "苹果";
com[2].dy = "2009-10-5";
书上没有解释Computer[] com = new Computer[3]这样写是什么意思,
我觉得是数组,但computer是类,类也可以定义为数组吗?
这样运行错误,提示没有给数组赋值,必须要下面这样写才对;

Computer[] com = new Computer[3]
{
new Computer(),
new Computer(),
new Computer()
};

请教下!

来来,我解释一下
看见过 int []a=new int[3]吗?
其实 就是 声明一个数组,类型是int型
Computer[] com = new Computer[3]
显而易见 声明了一个数组,类型是Computer
只不过 Computer是个对象
这个数组的每个元素都是一个Computer对象,对象有name,dy属性罢了
对不对?
万物皆对象= =

当然你要给 这个数组赋值的话
肯定要 把这个 对象先New出来
Computer c=New Computer();
c.name="gaga";
c.dy="123";
com [0]=c;
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-11
1.类可以定义为数组。
2.使用时可需要先对数组内初始化:
Computer[] com = new Computer[3];
com[0]=new Computer();
com[0].name = "惠普";
com[0].dy = "2009-10-5";
如果没有com[0]=new Computer();
com[0].name = "惠普";这句就会出错。追问

就是说这个我自定义的类可以声明为数组,但是要用的话必须要先初始化,这个 new Computer() 是初始化的简写吗?还有个问题,控件可以声明为数组吗?比如这样:
Label[] lbg = new Label[engineers.Length]; //一个Label控件,它的数组长度是engineers数组的长度,然后: lbd[i] = new Label(); lbd[i].Text = engineers[i].Name;
在窗体中并没有任何label控件,但是在下面有这样的代码:
this.Controls.Add(lbd[i]);

追答

控件也可以作为数组的成员,Controls.Add方法添加前应设定好位置以及尺寸

追问

必须要通过Controls添加到窗体中对吗?
任何控件在不拉到窗体中的情况下,都可以同声明数据,然后通过Controls在代码中添加到窗体中吗?
但我感觉这样好像很麻烦,会增加很多代码量!

追答

Controls就像一个容器,这个容器里有什么画面上才会表现出来。C#已经帮你做了很多了,如果是C或者其他语言那才叫一个麻烦。

追问

我的意思是这样代码生成控件,不如直接控件拉到窗体上省事啊!

追答

这样做适合向窗体动态添加控件。

本回答被提问者采纳
第2个回答  2012-04-25
c#里面都可以理解为类
string[] strArr = new string[]{};
这句话没啥问题吧?
string本身也是类,string其实是String的别名,为了减少程序员的代码量
比如int 其实就是Int32的别名
Computer 也是类,所以是可以的这样写的
第3个回答  2012-04-25
这样定义并初始化:
Computer[] com = new Computer[3]()
{
new Computer(){name = "惠普",dy = "2009-10-5"}
new Computer(){name = "戴尔",dy = "2009-10-5"},
new Computer(){name = "苹果",dy = "2009-10-5"},
};
第4个回答  2012-05-03
c#强烈建议使用泛型
List<Computer> listComputer = New List<Computer>();
Computer com = New Computer();
com.name = "惠普";
com.dy = "2009-10-5";
listComputer.Add(com);
com.name = "戴尔";
com.dy = "2009-10-5";
listComputer.Add(com);
com.name = "苹果";
com.dy = "2009-10-5";
listComputer.Add(com);
相似回答