![]() |
1
11
我将向a添加一个复制构造函数,然后向B添加一个新的构造函数,该构造函数接受a的一个实例并将其传递给基的复制构造函数。 |
![]() |
2
10
在语言中没有自动实现这一点的方法。。。 一个选项是向类B添加一个构造函数,该构造函数将类a作为参数。
在这种情况下,构造函数可以根据需要复制相关数据。 |
![]() |
3
5
优点: 可维护性。无需更改复制构造函数或类似内容,也无需添加或删除属性。 缺点 :性能。反射很慢。我们仍然在讨论平均大小的类的毫秒数。 下面是一个基于反射的浅层复制实现,使用扩展方法支持复制到子类:
单元测试:
|
![]() |
4
4
|
![]() |
5
1
在B中创建一个允许传入a类型对象的ctor,然后复制a字段并根据需要设置B字段。 |
![]() |
6
0
您可以在类B上创建一个Convert方法,该方法接受基类。
您还可以在ClassA的对象中为ClassB创建一个构造函数。 |
![]() |
7
0
不,你不能那样做。实现这一点的一种方法是在类B上添加一个接受类型B参数的构造函数,然后手动添加数据。 所以你可以有这样的东西:
|
![]() |
8
0
在基类中,在下面添加CreateObject虚拟方法。。。
然后假设您想从超级类创建一个真实的子类对象,只需调用
那就够了! |
![]() |
9
0
虽然没有人提出这一点(诚然,这并不适用于所有人),但应该说,如果您可以选择从一开始就创建对象b,那么就这样做,而不是创建对象a然后复制到对象b。例如,假设您在同一个函数中,并拥有以下代码:
不要担心最后一个注释步骤,只需从b开始设置值:
请不要因为你认为上面的话很愚蠢而投我的反对票!我遇到过许多程序员,他们太专注于自己的代码,以至于没有意识到一个更简单的解决方案就在眼前 |
![]() |
10
0
下面是一种使用构造函数的方法:
|
![]() |
ShaAnder · 为什么sqllachemy返回的是类而不是字符串 6 月前 |
![]() |
D_chez12 · 如果对象键值为空,则过滤掉数组中的对象 6 月前 |
![]() |
MeltingDog · 如何检索嵌套的JS对象并通过索引获取其数据? 6 月前 |
|
bolthy · 将数据帧中的值从对象转换为整数/浮点数,但它们仍作为对象运行 11 月前 |
![]() |
VonDerHase · 从列表中删除特定值,Python 11 月前 |