C#中数据类型主要分为值类型和引用类型,而值类型和引用类型在使用的过程中有什么区别呢,我觉得接触最多的就是下例中值的修改。 以下实例是从《你必须知道的.NET》(王涛著) 摘录 using System; class ValueTest { //定义值类型 public struct MyStruct { private int _myNo; public int MyNo { get{return _myNo;} set{_myNo=value;} } public MyStruct(int myNo) { _myNo=myNo; } public void ShowNo() { Console.WriteLine(_myNo); } } //定义应用类型 public class MyClass { private int _myNo; public int MyNo { get{return _myNo;} set{_myNo=value;} } public MyClass() { _myNo=0; } public MyClass(int myNo) { _myNo=myNo; } public void ShowNo() { Console.WriteLine(_myNo); } } //值类型和引用类型的区别 public static void Main() { //内存分配于线程的堆栈上 //创建了值为等价“0”的实例 MyStruct myStruct=new MyStruct(); //在线程的堆栈上创建了引用,但未指向任何实例 MyClass myClass; //内存分配于托管堆上 myClass=new MyClass(); //在堆栈上修改成员 myStruct.MyNo=1; //将指针指向托管堆 myClass.MyNo=2; myStruct.ShowNo(); myClass.ShowNo(); //在堆栈上新建内存,并执行成员拷贝 MyStruct myStruct2=myStruct; //拷贝引用地址 MyClass myClass2=myClass; //在堆栈上修改myStruct的成员 myStruct.MyNo=3; //在托管堆上修改成员 myClass.MyNo=4; myStruct.ShowNo(); myClass.ShowNo(); myStruct2.ShowNo(); myClass2.ShowNo(); } } 输出: 1 2 3 4 1 4