记忆中的C#那些基础之数组(上)----(此文适合于新手,高手就请绕道)

  很久都没写笔记了,前段时间由于工作再加上杂七杂八的事情一直没时间写,也没心情写,这段时间空下来了,有时间了,写点简单的吧,此文适合于新手,高手就请绕道。

  吐槽完毕,正文开始:

 

一.  数组的声明    

int[] myArray

二.  数组的初始化

  使用new指定数组中的元素和数量来来初始化数组的变量     

myArray = new int[4];

  在声明和初始化数组后,变量myArray就引用了4个整型值,它们位于托管堆上,在指定了数组大小后,如果不复制数组中的所有元素,就不能重新设置数组的大小。

  

   除了在两个语句中声明数组外,还可以在一条语句中声明数组  

 int[] myArray = new int[4];

  还可以用数组初始化器为每个元素赋值:

int[] myArray = new int[4]{23,5,6,18};

  使用花括号还可以不用指定数组的大小,编译器会自动统计数组的个数:       

string[] strName = new string[]{“limits”,”fly”,”studion”};

  还可以用下面简化方式进行数组声明:     

 string[] strName = {“limits”,”fly”,”studion”};

三.  访问数组元素

  在声明和初始化数组后,就可以使用索引器访问数组的元素了,数组只支持整型参数的索引器。通过索引器传递元素编号,就可以访问数组;索引器是从0开始计数的,表示第一个数组元素,可以传递给索引器的的最大值是元素个数减1,因为索引是从0开始的。注:如果使用错误的索引器值(不存在的对应元素),就会抛出IndexOutOfRangeException类型的异常。

 //初始化数组

 int[] arrNumber = new int[] { 2, 4, 6, 8, 10, 12 };

 //使用索引器访问第二个元素

int arr1 = arrNumber[1];

             不知道数组元素的个数,可以在for语句中使用Length属性来获取每个元素:

int[] arrNumber = new int[] { 2, 4, 6, 8, 10, 12 };

for (int i = 0; i < arrNumber.Length; i++)
{
    Console.WriteLine(arrNumber[i]);
}        

                   另外一种方法是使用 foreach来读取每个数组元素,效果跟for语句一样:

int[] arrNumber = new int[] { 2, 4, 6, 8, 10, 12 };
foreach (int item in arrNumber)
{

     Console.WriteLine(item);

}

四.  使用引用类型

  除了声明预定义类型的数组外,还可以声明自定义类型的数组:

   class Program
    {
        public class Student
        { 
            //学生姓名的两个自动属性
            public string firstName
            {
                get;
                set;
            }

            public string lastName
            {
                get;
                set;
            }

            //重写ToString()方法
            public override string ToString()
            {
                return string.Format("{0},{1}", firstName, lastName);
            }
        }

        static void Main(string[] args)
        {
            //声明一个包含3个Student元素的数组
            Student[] student = new Student[3];
            student[0] = new Student { firstName = "Lim", lastName = "Deng" };
            student[1] = new Student { firstName = "Yuchun", lastName = "Xiang" };
            student[2] = new Student { firstName = "Pengfei", lastName = "Lai" };

            //使用 foreach语句读出每个Student元素
            foreach (var item in student)
            {
                Console.WriteLine(item);
            }
    }

结果如下图:

  从上面例子可以看出Student是存储在栈上的一个变量,改变量引用了存储在托管堆上的Student元素对应的数组,这个数组足够存放3个引用空间,数组中的每一个项都引用了Student对象,而这些Student对象都存储在托管堆上。

posted @ 2012-07-14 18:23  程序老炮儿清道夫  阅读(1776)  评论(8编辑  收藏  举报