c#语言中结构体如何定义结构体数组?新手求教!

//StructStudent[] stsz = new StructStudent[5];
//for (int i = 0; i < stsz.Length; i++)
//{
// stsz[i] = new StructStudent();
//}
问题一:请解释下以上代码的意思
问题二:结构体如果在创建结构体对象后如不给结构体数组对象实例化会怎么样?
问题三:我要保存N个学生结构体难道一一给他们结构体赋值吗?
我能用这个
//for (int i = 0; i < stsz.Length; i++)
//{
// stsz[i] = new StructStudent();
//} 全部赋值吗?

问题1:开辟sizeof(StructStudent)*5个内存空间给数组stsz,并在for循环中使用无参构造方法初始化数组中的所有成员。
问题2:如果不执行循环进行初始化,无任何影响,可正常使用。结构在编译时就已经初始化,所有的成员会用默认值进行初始化,而你问题1中是在运行时初始化的。
问题3:如果要保存N个结构体,则必须逐一赋值。你给出的代码是运行时的初始化,实际在这之前的编译期就已经初始化过了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-04
回答1:这段代码就是实例化一个数组,然后循环数组依次实例化每个item。
回答2:不会怎么样,结构体是值类型,不需要实例化也有默认值。
回答3:结构体的实例化只是调用了一下构造函数而已,如果没有构造函数或者是空的构造函数那么new是没有意义的。所以根本不需要new,可以直接使用。
第2个回答  2012-01-04
哥们我真不知道怎么回答,只能说好好学习吧,不懂的就多调试一下。
第3个回答  2012-01-04
问题1
我不知道你的对不对
但是,大概明白你的意思了

按理说,for循环是没必要的

上面的代码的意思,是StructStudent类的5个对象数组,而你下面的意思是想给他们实例化,但是按理说,最上面的代码已经实例化了。。。=。=
问题2
估计我不太专业吧,我一直在用C#但是我从来没用到结构体,貌似就是关键字的不同,和存放位置不动,我更喜欢类,不如你也这么用。
问题3 和2一个样