using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication6
{
class Suger {
public int Count { get; set; }
public Suger(int n)
{
Count = n;
}
}
class Child {
public Suger suger;
public void EatSuger(int n)
{
suger.Count -= n;
}
public static Child CopyFrom(Child child)
{
Child c = new Child();
c.suger = child.suger;
//c.suger = new Suger(child.suger.Count);
return c;
}
}
class Program
{
static void Main(string[] args)
{
Child zhangSan = new Child();
zhangSan.suger = new Suger(10);
Child liSi = Child.CopyFrom(zhangSan);
Console.WriteLine("zhangSan.suger.Count:{0}, liSi.suger.Count:{1}", zhangSan.suger.Count, liSi.suger.Count);
zhangSan.EatSuger(2);
Console.WriteLine("zhangSan.suger.Count:{0}, liSi.suger.Count:{1}", zhangSan.suger.Count, liSi.suger.Count);
}
//zhangSan.suger.Count:10, liSi.suger.Count:10
//zhangSan.suger.Count:8, liSi.suger.Count:8
//请按任意键继续. . .
}
}

本文通过一个简单的C#示例程序探讨了对象引用的特点。主要分析了当一个对象被复制时,原始对象与新对象之间的关系,特别是对于可变对象来说,如何影响彼此的状态。实验表明,直接赋值会产生浅拷贝效果,导致两个对象共享同一份可变数据。
831

被折叠的 条评论
为什么被折叠?



