生命如此短暂,掌握技艺却要如此长久

风流不在谈锋胜, 袖手无言味最长。**_** 莫言大道人难得,自是功夫不到头。

导航

数组学习笔记

 昨天理顺了一下数组学习知识,又看了几本书上关于数组的说法,数组的形象逐渐在我脑子里清晰了。
         C#中数组都是对象,可以有各种方法和性质。实际上创建数组就是创建System.Array类型的对象。
         数组的声明
         类型 [] 数组名                         可以用new关键字实例化数组
      myArray=new int[6];              这就为存有五个整数的数组分配了内存。
       注意:数组第一个元素的索引值总是0;不能设置上下边界,也不能改变数组的大小。
        数组的默认值与数组的类型有关,值类型的数组根据类型有默认值。数组中引用类型系统自动初始化为null,我们必须进行特地的初始化才能访问其元素。
        下面两段程序可以帮助更好的理解数组是引用类型
程序1:

   int [] myarry;
   int [] copy;

   myarry=new int [5];
   copy=new int [5];
 
   myarry[0]=3;
   copy[0]=10;

   copy=myarry;

   Console.WriteLine(copy[0].ToString());
   Console.Read();

程序2:

   int [] myarry;
   int [] copy;

   myarry=new int [5];
   copy=new int [5];
 
   myarry[0]=3;
   copy[0]=10;

   copy=myarry.Clone();

   Console.WriteLine(copy[0].ToString());
   Console.Read();

两端程序的输出比较
 程序1:         3

 程序2:         3
虽然两个程序输出相同,但两个程序本质不同,程序1,2中
   myarry=new int [5];
   copy=new int [5];
都为两个数组分配了空间,程序1中copy虽然分配了空间,但后来copy接受了myarry的引用,使原来的失去了引用使用,就成了垃圾内存,会被CLR回收。这就造成了系统性能的损失,好的习惯是尽量避免这种无用的空间分配。而程序2中传递的是myarry的克隆,copy原来的空间接受了这个拷贝,所以没有变成垃圾。当然这个例子只是讲清了一小方面,是我自己结合别人的例子胡乱写得,欢迎朋友们指点。

posted on 2006-01-04 10:45  拼命郎  阅读(188)  评论(0编辑  收藏  举报