class a
    {
        public a(string name,int age)
        {
        }
        public string name;
        public int age;
    }
 a A = new a("danny", 20);
            a B = A;
            MessageBox.Show(B.name + "  " + B.age);
            B.age = 21;
            
            B.name = "danny";
            MessageBox.Show(A.name + "   " + A.age);
第二句是什么意思
有没有可以完全的解释一下~我的理解本来就是创建一个对象B~而这个对象B 相当于A~但试了一试~这是可以当作引用如果是可以当作引用的话,那为什么第一次的Messagebox.show 显示的是B.的默认值?
也就是name=空 age=0
而接下来通过对对象B的成员设置~
从而改变了A,结果第二次messagebox显示A的成员被修改了问题就在这里了如果我的了解没有错的话~那为什么B的成员会是默认值? 而不是把B所有的成员的值设置成A的成员
如果我要显示A对象的成员的值~完全赋值给B对象应该怎么做?
其他.net 本来的类~基本上都有一个Clone 方法
如果我不用方法来实现应该怎么做?
请高手指点

解决方案 »

  1.   

    呵呵 你虽然写了一个带参数的构造函数 不过你的构造函数里并没有执行赋值的过程所以 a A = new a("danny", 20);//此时A.name = null,A.age=0hoho
      

  2.   

    class a
        {
            public a() { }        public a(string name,int age)
            {
                this.Age = age;
                this.Name = name;
            }
            private string _name;
            private int _age;
            public string Name
            {            get { return _name; }
                set { _name = value; }        }
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            
            }
        }
      

  3.   

    a A = new a("danny", 20);//这句会实例化一个类a的对象,并且用调用构造函数,但是你的构造函数是空的,所有name是null,age=0
                a B = A; //实例化一个类a的实例B并且用A来初始化,也就是B是A的引用 你可以这么理解,此时A就是B,B就是A
                MessageBox.Show(B.name + "  " + B.age);//此时name还是null
                B.age = 21; 
                
                B.name = "danny";
                MessageBox.Show(A.name + "   " + A.age); //因为B是A的引用,所有对B对象的修改其实也相当于对A做了修改,因为他们指向的是堆中的一个地方的数据。所以A的值就变咯。
      

  4.   

    楼主 在.NET的命名规范中类名首字母是大写,而局部变量或对象应该是以小写字母开头的
      

  5.   

    楼主 在.NET的命名规范中类名首字母是大写,而局部变量或对象应该是以小写字母开头的
    ======UP!学习!
      

  6.   

    那我要是这样呢
    string aaaa=B.name;
    这样的含义也是一样吗
      

  7.   

    a B = A;
    正如6楼所说例化一个类a的实例B并且用A来初始化,也就是B是A的引用 你可以这么理解,此时A就是B,B就是A那我可不可以模仿对象引用的复制来~复制一个对象的成员的引用?
    就是通过这个引用可以直接影响到对象的成员
    当然这里不需要这么做
    但有时候可能要这样做