AXzhz

专注ASP.NET!
        写软件的都是小姐,用软件的都是大爷。真TMD说的正确!
                嫖妓不给钱,反说被强奸!___中国共享软件的无奈!
读小学的时候大学不要钱,读大学了小学不要钱。
没工作时国家有分福利房,工作了后全是高价房!!

                        此软件能有效的破解QQ密码。(注:破解QQ密码是违法行为,请不要将软件用于违法行为)
“安得广厦千万间,大庇天下寒士俱欢颜,风雨不动安如山。”1200多年前,诗人杜甫的理想,如今被一帮享受着电脑和互联网带来的快捷生活方式的受过高等教育的大孩子憧憬着。

导航

C#数组Copy探秘(附全码)_AX

【起源】
很久很久以前的一道笔试题:大意就是把一个个数组的数据copy到另一个数组中.我当时用的循环赋值.
这两天总在想这个问题,于是动手研究了一下下!
【方法】
循环赋值:最直觉的做法,难道来源于C?数组不能直接copy.
直接赋值:妈呀!这么原始野蛮简单的方法都行.真是不试不知道,一试吓一跳!!
clone赋值:"克隆"真是项相当不错的技术,都弄到编程里来了,clone是首先出现在编程里还是出现在科学试验室里呢?

【总结】
方法①和③是建立副本(魔兽??),赋值后跟源脱离关系,  方法②是引用.其实就是源的另外一个变量名.
如果是②,不管你定义的数组长度是多少,赋值完成后都会与源相同.

【源码】
  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11
 12namespace AX
 13{
 14    /// <summary>
 15    /// TestSimple 的摘要说明。
 16    /// </summary>

 17    public class TestSimple : System.Web.UI.Page
 18    {
 19        private void Page_Load(object sender, System.EventArgs e)
 20        {
 21            // 在此处放置用户代码以初始化页面
 22            if(!this.IsPostBack)
 23            {
 24                //声明
 25                int[] source={1,2,3,4};
 26                int[] target=new int[6]; //OK
 27//                int[] target=null;       //Bad
 28//                int[] target=new int[4]; //OK
 29
 30//                int[] copy=new int[4];//OK
 31//                int[] copy=new int[2];//OK
 32                int[] copy=new int[7];//OK
 33                Response.Write("<font color=#ff7f00>copy的长度:"+copy.Length+"</font><br>");
 34
 35                //循环赋值,OK
 36                for(int i=0;i<4;i++)
 37                {
 38                    target[i]=source[i];
 39                }

 40                Response.Write("循环赋值target[1]="+target[1]+"<br>");
 41
 42                //直接赋值
 43                copy=source;
 44                Response.Write("直接赋值copy[1]="+copy[1]+"<br>");
 45
 46                //clone赋值 OK
 47                int[] clone=(int[])source.Clone();
 48
 49                //改变数组copy元素的值
 50                copy[1]=5;
 51                Response.Write("<br><font color=red>改变copy[1]元素的值:<br>source[1]="+source[1]+"<br>target[1]="+target[1]+"<br>copy[1]="+copy[1]+"<br>clone[1]="+clone[1]+"</font><br>");
 52
 53                //改变数组clone元素的值
 54                clone[1]=9;
 55                Response.Write("<br><font color=6f4242>改变clone[1]元素的值:<br>source[1]="+source[1]+"<br>target[1]="+target[1]+"<br>copy[1]="+copy[1]+"<br>clone[1]="+clone[1]+"</font><br>");
 56
 57
 58//                //改变数组元素后进行clone赋值 OK
 59//                int[] clone=(int[])source.Clone();
 60
 61                //打印出copy的元素
 62                Response.Write("<br>打印出copy的元素:");
 63                foreach(int i in copy)
 64                {
 65                    Response.Write(i);
 66                }

 67
 68                //打印出clone的元素
 69                Response.Write("<br>打印出clone的元素:");
 70                foreach(int i in clone)
 71                {
 72                    Response.Write(i);
 73                }

 74
 75                //显示Copy的第6个元素.Bad
 76//                Response.Write("<br>copy的第6个元素:"+copy[5]);
 77
 78
 79                Response.Write("<br>循环赋值target的长度和第6个元素值:"+target.Length+"||"+target[5]);
 80
 81                //显示Copy的长度
 82                Response.Write("<br><font color=#ff7f00>copy的长度:"+copy.Length+"</font><br>");
 83            }

 84        }

 85
 86        Web 窗体设计器生成的代码
106    }

107}

108



【测试结果】

posted on 2006-10-25 14:31  斧头帮少帮主  阅读(4821)  评论(2编辑  收藏  举报

Google
 
站内搜索:        
园内搜索:
金山词霸: