class Student
{
       public Student(string name, int age)
       { 
Name = name; 
Age = age;
}
       public string Name;
       public int Age;
}
static void Main(string[] args)
{
  //这里定义了一个数组,但是通过监视窗口,可以看到初始化数组后,students数组
  //中的三个对象元素初始值都是null,这是为什么呢?如果数组元素是引用类型,初
  //始化后的元素值是null;如果是值类型,则创建数组后的元素初始值是其类型的默   
           //认值,是这样吗?这是为什么呢?究竟创建数组的时候,系统是如何处理的,内存
           //是如何分配的?创建值类型和引用类型元素的数组有什么区别?
Student students = new Student[3];
students[0] = new Student("Scofield", Genders.Male, 28, "越狱狱");
students[1] = new Student("张靓靓", Genders.Female, 20, "唱歌歌");
students[2] = new Student("周杰杰", Genders.Male, 21, "耍双节棍棍");
}

解决方案 »

  1.   

    // 如果数组元素是引用类型,初
    // 始化后的元素值是null;如果是值类型,则创建数组后的元素初始值是其类型的默      
    // 认值,是这样吗?yes
      

  2.   

    请参看在线 msdn 的有关说明:
    http://msdn.microsoft.com/zh-cn/library/0a7fscd0.aspx最后那一部分:值类型数组和引用类型数组请看下列数组声明:SomeType[] array4 = new SomeType[10];该语句的结果取决于 SomeType 是值类型还是引用类型。如果是值类型,则该语句将创建一个由 10 个 SomeType 类型的实例组成的数组。如果 SomeType 是引用类型,则该语句将创建一个由 10 个元素组成的数组,其中每个元素都初始化为空引用。
      

  3.   

    另外,LZ 的这段代码有问题:
    Student students = new Student[3];应该改为:
    Student[] students = new Student[3];