class Program { static void Main(string[] args) { Person A = new Person() { Name = "小孩", Age = 12 }; Person B = A;//只是建立个A的新副本,复制完A的值到B之后两者再无联系 A.Age = 24; A.Name = "青年"; A.ShowMessage(); B.ShowMessage(); //两者输出不同,证明了两者之间毫无联系,更改A不会影响B,更改B也不会影响A. Console.ReadKey(); PersonObject C = new PersonObject() { Name = "小孩", Age = 12 }; PersonObject D = C; //引用类型使用等号使两个对象指向同一个引用,修改任意一个对象都会使另一个对象改变 C.Age = 24; C.Name = "青年"; C.ShowMessage(); D.ShowMessage(); //尽管之前将D引用于C,但这只是表面C和D都引用至同一个对象PersonObejct。更改C或D其中一个都会 //改变PersonObejct的属性,所以两个对象输出一样。 Console.ReadKey(); } } /// <summary> /// 值类型struct,次结构无法被继承,和int,string,double一样存放于内存中栈 /// </summary> public struct Person //值类型struct和对象类型一样,都能有方法和属性,也能实现接口,但是无法继承和被继承. { public string Name { get; set; } public int Age { get; set; } public void ShowMessage() { Console.WriteLine("My Name is " + Name + "My Age is" + Age); } } /// <summary> /// 引用类型,即.Net中的对象,存放于堆 /// </summary> public class PersonObject //引用类型 { public string Name { get; set; } public int Age { get; set; } public void ShowMessage() { Console.WriteLine("My Name is " + Name + "My Age is" + Age); } }