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