110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public class CA
{
private int m_iCount;
public void setCount(int iT)
{
m_iCount = iT;
}
public int getCount()
{
return m_iCount;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CA a1 = new CA();
CA a2 = new CA();
a1.setCount(11111);
a2 = a1;
a2.setCount(22222);
MessageBox.Show(a1.getCount().ToString());//为什么a1的也变成了22222?如果不想让a1也变该怎么办?
MessageBox.Show(a2.getCount().ToString());
a1 = null;
MessageBox.Show(a2.getCount().ToString());//如果前面表示a2就是a1了的话,为什么这里a2仍然是可以使用的?
}
}
}
CA a1 = new CA();
CA a2 = new CA();
a2 = a1;//我想不让a2这个引用指向a1所指向的对象,而是想让a2所指向的对象的内容被赋值为a1所指向的对象,该怎么做呢?
a1.setCount(11111);//
a2 = a1;//a2指向的是a1的托管堆,
a2.setCount(22222);//这里调用的setCount是a1的方法,改变的当然也是a1的值
CA a1 = new CA(); // a1 指向一个新对象
CA a2 = new CA(); // a2 指向一个新对象
a1.setCount(11111);
a2 = a1; // a2 指向 a1 对象,两者指向同一个对象
a2.setCount(22222);
a1 = null; // a1 置为空,a2 还是原来指那个对象,并不影响
// 这里即使改为 a1 = new CA(),还是不影响 a2
a2=a1;
private void button1_Click(object sender, EventArgs e)
{
CA a1 = new CA();
CA a2 = new CA();
a1.setCount(11111);
a2 = a1;//这里只是引用的复制,即a1这个引用自身而非它引用的对象复制到a2。
a2.setCount(22222);//此时a1与a2引用同一个对象
MessageBox.Show(a1.getCount().ToString());//为什么a1的也变成了22222?如果不想让a1也变该怎么办?
MessageBox.Show(a2.getCount().ToString());//这个是当然的了,本来就是同一个对象嘛
a1 = null;//现在a1不引用任何对象,但a2并不影响。
MessageBox.Show(a2.getCount().ToString());//如果前面表示a2就是a1了的话,为什么这里a2仍然是可以使用的?
}