C#为啥把复制构造器弄没了………………
12 个解决方案
#1
继承接口跟实现有什么直接关系?如果你说“有个a,我想深拷贝给b”,这跟你用什么接口有什么关系?你继承了接口,不是还要自己写实现方法?跟“直接自己自机械一个深拷贝的方法”有矛盾吗?你听说过继承了某个接口就不用自己写方法了吗?
.net的接口,不会继承任何代码。没听说过因为你给一个class声明它使用一个接口就继承了什么代码来的。
.net的接口,不会继承任何代码。没听说过因为你给一个class声明它使用一个接口就继承了什么代码来的。
#2
继承接口并实现,这就是要写n行代码。自己写实现方法,这还是要写这n行代码。
如果你不知道为什么要继承接口,你就不需要它。不需要为了“接口”这个概念比较时髦而使用它。
从你的描述中看出,你完全不知道自己为什么要使用接口。仅此而已。
如果你不知道为什么要继承接口,你就不需要它。不需要为了“接口”这个概念比较时髦而使用它。
从你的描述中看出,你完全不知道自己为什么要使用接口。仅此而已。
#3
首先感谢您热心的回复!其次,如果两者有明显的代码量的区别 我也就不会纠结了,就是因为这两个工作了很相似,所以我才纠结,我想知道一个资深程序员的习惯是怎么做的。是去继承一个接口,还是自己去弄一个方法。就好似接口都是用I开头的一样,这种约定俗成的东西,不会有哪本书会告诉我。所以我才要问。希望能够耐心的给我解答一下!再次感谢!
#4
继承ICloneable接口也是要自己实现拷贝的 你的问题是为什么要继承ICloneable接口 自己写一个不是也可以是实现么 继承ICloneable接口或者IDisposable之类的是一些常用的接口 接口就是规范 假如组里有人要用你的类 如果你自己实现还要告诉人家你这个类里哪个方法是干什么用的 多麻烦 就像你说的 这些常用接口是约定俗成的东西 大家都知道,这样人家马上就知道你这个方法是干什么用的了 不用跑来跑去问来问去了
偶是这么理解的...
偶是这么理解的...
#5
我好像突然想明白了。如果 在某个类中,需要调用很多不同的类的 深拷贝功能,就可以继承这个借口,然后通过接口去访问方法,来减少重载的次数,反之,如果只是这个类自己用,而不需要通过接口去调用这个方法,就可以自己写一个 深拷贝的方法了 我说的对么?
举个例子:
class Class1:ICloneable
{
public object Clone(){................}
}
class Class2:ICloneable
{
public object Clone(){................}
}
class Class3:ICloneable
{
public object Clone(){................}
}
class Class//用于调用前边类中的复制功能
{
public void CloneClass(ICloneable iClone1,ICloneable iClone2)//省去多次重载的麻烦
{
iClone2=iClone1.Clone();
}
}
菜鸟一只。。。例子不贴切 希望有人能看得懂吧
举个例子:
class Class1:ICloneable
{
public object Clone(){................}
}
class Class2:ICloneable
{
public object Clone(){................}
}
class Class3:ICloneable
{
public object Clone(){................}
}
class Class//用于调用前边类中的复制功能
{
public void CloneClass(ICloneable iClone1,ICloneable iClone2)//省去多次重载的麻烦
{
iClone2=iClone1.Clone();
}
}
菜鸟一只。。。例子不贴切 希望有人能看得懂吧
#6
恩恩 对,这个也是,这样就能统一大家的类中拥有的功能了!
#7
哦,对了 5L的帖子忘了对Clone方法返回的Object进行类型转换了……
#8
恩,说的楼主有些模糊了。我解释下,接口相当于电源插座,他只是个预留的东西,你可以在上边插冰箱、插电脑,它只是把你的用电器囊括到你的家用电器这个行列中,比如说你家没有保存食物的功能,当你插了个冰箱,你家整体就多了个保存食物的功能了。
这个和类继承有区别,接口是程序实现你插上东西的途径,插上的东西是由你决定了,所以楼上说,是否继承接口,写的东西都差不多。
这个和类继承有区别,接口是程序实现你插上东西的途径,插上的东西是由你决定了,所以楼上说,是否继承接口,写的东西都差不多。
#9
LZ纠结
接口只是定义一个规范,个人的实现可能都是不一样的。微软只是吧这个规范提供出来,继承接口去实现,或自定义一个类我觉得都可以。但继承接口就要实现接口里面的所以方法,所以这里自己取舍
接口只是定义一个规范,个人的实现可能都是不一样的。微软只是吧这个规范提供出来,继承接口去实现,或自定义一个类我觉得都可以。但继承接口就要实现接口里面的所以方法,所以这里自己取舍
#10
感谢各位的回答~~我已经知道该怎么做了~谢谢
#11
接口是要自己实现的
public class Obj : ICloneable
{
public Obj() { }
private Obj(Obj obj) { this.FuckU2 = obj.FuckU2; }
public bool FuckU2 { get; set; }
public object Clone()
{
return new Obj(this);
}
}
#12
关于LZ问的为啥一定要实现接口,而不是自己添加个Clone方法,楼上只是说了很表层的一部分。
.NET之所以提供IDisposable以及IClonable这种看似没什么营养的接口,是有实际用处的,不仅仅是让你看着规范。
其关键用处在于利用OOP的多态特性,实现统一相关操作,以提高互操作性。这是因为.NET Framework很大一部分内容是这个类库,其中一些就Dispose以及Clone相关。比如,using语句(不是名字空间那个)作为C#语法的一部分,要求参数必须是IDisposable类型。
.NET之所以提供IDisposable以及IClonable这种看似没什么营养的接口,是有实际用处的,不仅仅是让你看着规范。
其关键用处在于利用OOP的多态特性,实现统一相关操作,以提高互操作性。这是因为.NET Framework很大一部分内容是这个类库,其中一些就Dispose以及Clone相关。比如,using语句(不是名字空间那个)作为C#语法的一部分,要求参数必须是IDisposable类型。
#1
继承接口跟实现有什么直接关系?如果你说“有个a,我想深拷贝给b”,这跟你用什么接口有什么关系?你继承了接口,不是还要自己写实现方法?跟“直接自己自机械一个深拷贝的方法”有矛盾吗?你听说过继承了某个接口就不用自己写方法了吗?
.net的接口,不会继承任何代码。没听说过因为你给一个class声明它使用一个接口就继承了什么代码来的。
.net的接口,不会继承任何代码。没听说过因为你给一个class声明它使用一个接口就继承了什么代码来的。
#2
继承接口并实现,这就是要写n行代码。自己写实现方法,这还是要写这n行代码。
如果你不知道为什么要继承接口,你就不需要它。不需要为了“接口”这个概念比较时髦而使用它。
从你的描述中看出,你完全不知道自己为什么要使用接口。仅此而已。
如果你不知道为什么要继承接口,你就不需要它。不需要为了“接口”这个概念比较时髦而使用它。
从你的描述中看出,你完全不知道自己为什么要使用接口。仅此而已。
#3
首先感谢您热心的回复!其次,如果两者有明显的代码量的区别 我也就不会纠结了,就是因为这两个工作了很相似,所以我才纠结,我想知道一个资深程序员的习惯是怎么做的。是去继承一个接口,还是自己去弄一个方法。就好似接口都是用I开头的一样,这种约定俗成的东西,不会有哪本书会告诉我。所以我才要问。希望能够耐心的给我解答一下!再次感谢!
#4
继承ICloneable接口也是要自己实现拷贝的 你的问题是为什么要继承ICloneable接口 自己写一个不是也可以是实现么 继承ICloneable接口或者IDisposable之类的是一些常用的接口 接口就是规范 假如组里有人要用你的类 如果你自己实现还要告诉人家你这个类里哪个方法是干什么用的 多麻烦 就像你说的 这些常用接口是约定俗成的东西 大家都知道,这样人家马上就知道你这个方法是干什么用的了 不用跑来跑去问来问去了
偶是这么理解的...
偶是这么理解的...
#5
我好像突然想明白了。如果 在某个类中,需要调用很多不同的类的 深拷贝功能,就可以继承这个借口,然后通过接口去访问方法,来减少重载的次数,反之,如果只是这个类自己用,而不需要通过接口去调用这个方法,就可以自己写一个 深拷贝的方法了 我说的对么?
举个例子:
class Class1:ICloneable
{
public object Clone(){................}
}
class Class2:ICloneable
{
public object Clone(){................}
}
class Class3:ICloneable
{
public object Clone(){................}
}
class Class//用于调用前边类中的复制功能
{
public void CloneClass(ICloneable iClone1,ICloneable iClone2)//省去多次重载的麻烦
{
iClone2=iClone1.Clone();
}
}
菜鸟一只。。。例子不贴切 希望有人能看得懂吧
举个例子:
class Class1:ICloneable
{
public object Clone(){................}
}
class Class2:ICloneable
{
public object Clone(){................}
}
class Class3:ICloneable
{
public object Clone(){................}
}
class Class//用于调用前边类中的复制功能
{
public void CloneClass(ICloneable iClone1,ICloneable iClone2)//省去多次重载的麻烦
{
iClone2=iClone1.Clone();
}
}
菜鸟一只。。。例子不贴切 希望有人能看得懂吧
#6
恩恩 对,这个也是,这样就能统一大家的类中拥有的功能了!
#7
哦,对了 5L的帖子忘了对Clone方法返回的Object进行类型转换了……
#8
恩,说的楼主有些模糊了。我解释下,接口相当于电源插座,他只是个预留的东西,你可以在上边插冰箱、插电脑,它只是把你的用电器囊括到你的家用电器这个行列中,比如说你家没有保存食物的功能,当你插了个冰箱,你家整体就多了个保存食物的功能了。
这个和类继承有区别,接口是程序实现你插上东西的途径,插上的东西是由你决定了,所以楼上说,是否继承接口,写的东西都差不多。
这个和类继承有区别,接口是程序实现你插上东西的途径,插上的东西是由你决定了,所以楼上说,是否继承接口,写的东西都差不多。
#9
LZ纠结
接口只是定义一个规范,个人的实现可能都是不一样的。微软只是吧这个规范提供出来,继承接口去实现,或自定义一个类我觉得都可以。但继承接口就要实现接口里面的所以方法,所以这里自己取舍
接口只是定义一个规范,个人的实现可能都是不一样的。微软只是吧这个规范提供出来,继承接口去实现,或自定义一个类我觉得都可以。但继承接口就要实现接口里面的所以方法,所以这里自己取舍
#10
感谢各位的回答~~我已经知道该怎么做了~谢谢
#11
接口是要自己实现的
public class Obj : ICloneable
{
public Obj() { }
private Obj(Obj obj) { this.FuckU2 = obj.FuckU2; }
public bool FuckU2 { get; set; }
public object Clone()
{
return new Obj(this);
}
}
#12
关于LZ问的为啥一定要实现接口,而不是自己添加个Clone方法,楼上只是说了很表层的一部分。
.NET之所以提供IDisposable以及IClonable这种看似没什么营养的接口,是有实际用处的,不仅仅是让你看着规范。
其关键用处在于利用OOP的多态特性,实现统一相关操作,以提高互操作性。这是因为.NET Framework很大一部分内容是这个类库,其中一些就Dispose以及Clone相关。比如,using语句(不是名字空间那个)作为C#语法的一部分,要求参数必须是IDisposable类型。
.NET之所以提供IDisposable以及IClonable这种看似没什么营养的接口,是有实际用处的,不仅仅是让你看着规范。
其关键用处在于利用OOP的多态特性,实现统一相关操作,以提高互操作性。这是因为.NET Framework很大一部分内容是这个类库,其中一些就Dispose以及Clone相关。比如,using语句(不是名字空间那个)作为C#语法的一部分,要求参数必须是IDisposable类型。