首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小弟我自定义的Clone函数不能被调用,为什么

2013-09-06 
我自定义的Clone函数不能被调用,为什么?我写了个小程序,可以执行:public class d : System.ICloneable{pub

我自定义的Clone函数不能被调用,为什么?
我写了个小程序,可以执行:


    public class d : System.ICloneable
    {
    public class d : System.ICloneable
    {
        public d(int ii) : base()
        {
            i = ii;
            Console.WriteLine("ctor");
        }
        ~d() { Console.WriteLine("dtor"); }
        public Object Clone()
        {
            return new d(i);
        }
        public int i;
    }
    class Program
    {
        static void Main(string[] args)
        {
            d d1 = new d(12);
            d d2 = d1;
            d2.i = 13;
            Console.WriteLine(d1.i);
        }
    }

运行输出是:

d ctor
13
d dtor
Press any key to continue . . .

但是我期待的是,既然class d实现了Clonable接口,那么d d2=d1就是一个新的对象创建,那么应该调用Clone函数对吧? 但是我调试发现并没有进入Clone函数,d2仍然是对于d1的引用。

我的代码错在哪里? 应该怎么改呢?
[解决办法]
要显式调用:d d2 = (d)d1.Clone();

热点排行