感觉clone就是用对象A调用一个clone方法new了一个相同的对象B,和直接new有什么区别?clone有什么用啊?

解决方案 »

  1.   

    clone是复制,new是生成某一个指定类型对象
      

  2.   

    new 产生的对象的属性都是初始值B=A.Clone()
    这样可以产生一个新的对象,并且B的属性和A都相同...相当于A的一个克隆
    但是 B != A
      

  3.   

    一个简单的可克隆的类 public class T : ICloneable{
    private string _Text="";

    public T(){}
    public T(string v){_Text=v;}
    public string Text {
    get {return _Text;}
    set {_Text=value;}
    }
    public object Clone(){
    T c=new T();
    c.Text=this.Text;
    return c;
    }
    }看看 克隆 和new的区别 private void MainForm_Load(object sender, EventArgs e){
    T a=new T("aaaaaaa");
    T b=(T)a.Clone();
    T c=new T();

    MessageBox.Show(a.Text);
    MessageBox.Show(b.Text);
    MessageBox.Show(c.Text);
    }
      

  4.   

    Clone方法称为浅表复制...它的返回值不是实例的一个独立副本而仅仅是同一数据的另一个视图...新对象中的引用与原始对象中的引用指向相同的对象...而new则是创建一个新实例...它与你的原始对象除了类型相同毫无关系...Clone方法通常用于要修改一个对象同时不想改变调用者的对象时...例如使用临时变量赋值时...