一、
类型A的引用变量 a1=类型A来构造
类型A的引用变量 a2=类型A来构造二、
类型A的引用变量 a1=类型A来构造
类型A的引用变量 a2=a1先理解上面的,你的问题就理解了,不要一味的被面象对象所迷惑

解决方案 »

  1.   

    一、
    类型A的引用变量 a1=类型A来构造
    类型A的引用变量 a2=类型A来构造
    a1和a2指向不同的类型A的实例对象
    二、
    类型A的引用变量 a1=类型A来构造
    类型A的引用变量 a2=a1
    a1和a2指向同一个类型A的实例对象
      

  2.   

    使用对象B去构造对象C,此时,对象C中有一个和A中的B一样的对象
    这怎么理解如何使用B构造C
    如果你是说
    C = B;这样直接传引用的构造,那么显然它们是一个对象。如果你是拷贝,比如
    C = new XXX();
    C.xxx = B.xxx
    C.yyy = B.yyy
    这样,那么两个就不是一个对象。你可以做一个试验
    如果object.ReferenceEquals(obja, objb);返回true的话,那么obja 和 objb 就是一个对象。
      

  3.   

    大版主,这个我还是理解的。我具体点说我的问题:
    首先:
    有一个数据类: Data, 操作类 Operate, 另一个操作类SubOperate;class Data
    {
        string str;
    }
    class Operate
    {
        Data _data;
        SubOperate _subOp; 
       
        public Operate(Data data)
        {
           _data = data;
           _subOp = new SubOperate (_data);
         }
    }class SubOperate
    {
         Data _data;
         public SubOperate(Data data)
         {
              _data = data;
          }}
    问题是:我在Operate中去改变_data值,SubOperate里面的_data会改变吗?
      

  4.   

    我具体点说我的问题:
    首先:
    有一个数据类: Data, 操作类 Operate, 另一个操作类SubOperate;class Data
    {
        string str;
    }
    class Operate
    {
        Data _data;
        SubOperate _subOp; 
       
        public Operate(Data data)
        {
           _data = data;
           _subOp = new SubOperate (_data);
         }
    }class SubOperate
    {
         Data _data;
         public SubOperate(Data data)
         {
              _data = data;
          }}
    问题是:我在Operate中去改变_data值,SubOperate里面的_data会改变吗?
      

  5.   


    public partial class Form1 : Form
    {
    class SubData
    {
    public string _subdata = "init";
    } class Data
    {
    public string _data = "init";
    public SubData _subdata; public Data()
    {
    _subdata = new SubData();
    }
    } class Operate
    {
    public Data _data;
    public SubOperate _subOp; public Operate(Data data)
    {
    _data = data;
    _subOp = new SubOperate(_data);
    }
    } class SubOperate
    {
    public Data _data;
    public SubSubOperate _subsubop; public SubOperate(Data data)
    {
    _data = data;
    _subsubop = new SubSubOperate(_data._subdata);
    }
    } class SubSubOperate
    {
    public SubData _subdata;
    public SubSubOperate(SubData data)
    {
    _subdata = data;
    }
    } public Form1()
    {
    InitializeComponent();
    } Data data;
    Operate op;
    private void Form1_Load(object sender, EventArgs e)
    {
    data = new Data();
    op = new Operate(data);
    } private void button1_Click(object sender, EventArgs e)
    {
    // 2.第二点击这个按钮
    data._subdata._subdata = "awdaw";
    } private void button2_Click(object sender, EventArgs e)
    {
    // 1.首先点击这个按钮 textbox 出现 "init"
    // 3.再次点击这个按钮 textbox 依旧是 init;
    textBox1.Text = op._subOp._subsubop._subdata._subdata;
    }
      

  6.   

    class 如果直接赋值,那就是同一个对象。
      

  7.   

    那么C中的那个和A中B一样的对象的值改变吗?答案是改变。