数组的copyto方法应该是一个浅拷贝,也就是说当我数组的值是引用类型的时候,复制的是地址。
class Program
{
static void Main(string[] args)
{
Student zhangsan = new Student();
zhangsan.name = "zhangsan";
zhangsan.age = 22;
Student lisi = new Student();
lisi.name = "Lisi";
lisi.age = 23;
Student wangwu = new Student();
wangwu.name = "Wangwu";
wangwu.age = 24;
Student zhaoliu = new Student();
zhaoliu.name = "ZhaoLiu";
zhaoliu.age = 25; Student [] oldArr=new Student[]{zhangsan,lisi,wangwu};
Student [] newArr = new Student[oldArr.Length];
oldArr.CopyTo(newArr,0);
soldArr.SetValue(zhaoliu, 0);
for (int i = 0; i < oldArr.Length;i++ )
{
Console.WriteLine(oldArr[i].name);
}
for (int i = 0; i < newArr.Length; i++)
{
Console.WriteLine(newArr[i].name);
}
Console.ReadKey();
}
}
public class Student
{
public String name;
public int age; }为什么这段代码的输出代码的输出是
zhaoliu
lisi
wangwu
zhangsan
lisi
wangwu
既然是浅拷贝,那我的oldarr改变了,那么newarr只是一个引用地址,newarr的输出也应该是
zhaoliu
lisi
wangwu
请各位大侠赐教!
class Program
{
static void Main(string[] args)
{
Student zhangsan = new Student();
zhangsan.name = "zhangsan";
zhangsan.age = 22;
Student lisi = new Student();
lisi.name = "Lisi";
lisi.age = 23;
Student wangwu = new Student();
wangwu.name = "Wangwu";
wangwu.age = 24;
Student zhaoliu = new Student();
zhaoliu.name = "ZhaoLiu";
zhaoliu.age = 25; Student [] oldArr=new Student[]{zhangsan,lisi,wangwu};
Student [] newArr = new Student[oldArr.Length];
oldArr.CopyTo(newArr,0);
soldArr.SetValue(zhaoliu, 0);
for (int i = 0; i < oldArr.Length;i++ )
{
Console.WriteLine(oldArr[i].name);
}
for (int i = 0; i < newArr.Length; i++)
{
Console.WriteLine(newArr[i].name);
}
Console.ReadKey();
}
}
public class Student
{
public String name;
public int age; }为什么这段代码的输出代码的输出是
zhaoliu
lisi
wangwu
zhangsan
lisi
wangwu
既然是浅拷贝,那我的oldarr改变了,那么newarr只是一个引用地址,newarr的输出也应该是
zhaoliu
lisi
wangwu
请各位大侠赐教!
Student[] oldArr = new Student[] { zhangsan, lisi, wangwu };
Student[] newArr = new Student[oldArr.Length];
Array.Copy(oldArr,newArr,3);
oldArr.SetValue(zhaoliu, 0);
Student[] oldArr = new Student[] { zhangsan, lisi, wangwu };
Student[] newArr = new Student[oldArr.Length];
newArr = oldArr;
//Array.Copy(oldArr,newArr,3);
oldArr.SetValue(zhaoliu, 0);
自己去看吧,没事google下
对象浅拷贝,只是复制本身,它包含的对象只是复制引用你可以上msdn上看看浅拷贝的定义而你的Copyto就是浅拷贝
还有就是你可以看看这个帖子上是怎么表述的
http://topic.csdn.net/t/20060512/01/4745869.html
但愿对你有帮助