C#中引用类型几个小例子

1.传递引用到方法中,会复制一个新的引用地址

 private void aa(Data data3) 

{

      data3 = null;
}

Data data = new Data();

data.name= "123";

Data data2 = data;

aa(data);

MessageBox.Show(data.name + "," + data2.name);

结果,123,123

当将data传入aa方法中时,会产生一个新的引用地址data3(在栈中),指向和data相同的堆地址

 

2.QQData tempData = new QQData();

            tempData.QQ = "123";

            lvMain.Items[0].Tag = tempData;

            tempData = null;

            QQData data2 = lvMain.Items[0].Tag as QQData;

            MessageBox.Show(data2.QQ);

结果123

3.string是一种特殊类型

string aa = "123";

string bb = aa;//在堆中没有分配新的内存空间,而是将bb的引用地址指向了和aa相同堆地址(bb引用是在栈中)

bb = "234";//在堆中分配了新的内存空间,bb的引用指向了"234"

MessageBox.Show(aa);

结果123

posted @ 2012-04-07 10:06  事理  阅读(1413)  评论(3编辑  收藏  举报