[讨论]几種複製數組的方法(數組裡面為值類型)
int[] i=new int[10000];
for(int j=0;j<10000;j++)
{
i[j]=j;
}
int[] iclone=(int[])i.Clone(); // 淺層複製
int[] icopy=new int[10000];
i.CopyTo(icopy,0); //複製所有元素
int[] newtempi=new int[10000];
newtempi=i; //定義實例再引用
int[] tempi=i; //沒有定義實例引用
for(int j=0;j<10000;j++)
{
i[j]=9;
}
for(int j=0;j<10000;j++)
{
tempi[j]=8;
}
for(int j=0;j<10;j++)
{
Console.Write(iclone[j].ToString()); //輸出0 1 2 3 4 5 6 7 8 9
Console.Write(icopy[j].ToString()); //輸出0 1 2 3 4 5 6 7 8 9
Console.Write(newtempi[j].ToString()); //以下輸出8 8 8 8 8 8 8 8 8
Console.Write(tempi[j].ToString());
Console.Write(i[j].ToString());
}
Console.ReadLine();
誰有空的話再比較下花費的時間, 而且再把數組裡面換成引用類型, 會發現有點不同
for(int j=0;j<10000;j++)
{
i[j]=j;
}
int[] iclone=(int[])i.Clone(); // 淺層複製
int[] icopy=new int[10000];
i.CopyTo(icopy,0); //複製所有元素
int[] newtempi=new int[10000];
newtempi=i; //定義實例再引用
int[] tempi=i; //沒有定義實例引用
for(int j=0;j<10000;j++)
{
i[j]=9;
}
for(int j=0;j<10000;j++)
{
tempi[j]=8;
}
for(int j=0;j<10;j++)
{
Console.Write(iclone[j].ToString()); //輸出0 1 2 3 4 5 6 7 8 9
Console.Write(icopy[j].ToString()); //輸出0 1 2 3 4 5 6 7 8 9
Console.Write(newtempi[j].ToString()); //以下輸出8 8 8 8 8 8 8 8 8
Console.Write(tempi[j].ToString());
Console.Write(i[j].ToString());
}
Console.ReadLine();
[此贴子已经被作者于2006-7-19 15:12:50编辑过]