值类型和引用类型的区别案例
2009-11-03 15:09
197 查看
C#中数据类型主要分为值类型和引用类型,而值类型和引用类型在使用的过程中有什么区别呢,我觉得接触最多的就是下例中值的修改。
以下实例是从《你必须知道的.NET》(王涛著) 摘录
输出:
1
2
3
4
1
4
以下实例是从《你必须知道的.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
相关文章推荐
- 值类型和引用类型的区别
- 值类型和引用类型的区别
- 值类型与引用类型的区别
- 值类型和引用类型的区别
- 值类型与引用类型的区别
- 值类型和引用类型的区别(转)
- 值类型和引用类型的区别?
- 值类型与引用类型的区别
- 值类型和引用类型的区别
- Emit学习-答疑篇-值类型和引用类型在使用时的区别
- 值类型和引用类型区别
- 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)
- 值类型和引用类型的区别?(转)
- 值类型和引用类型的区别
- 值类型与引用类型比较与区别
- 值类型和引用类型的区别?
- 值类型与引用类型的区别
- 值类型和引用类型的最基本的区别是什么?
- 值类型和引用类型的区别
- 值类型和引用类型区别