我有以下情况
情景1:
public class TT : t
{
public int x { get; set; }
public TT(t name, int name2)
{
this.att1 = name.att1;
this.att2 = name.att2;
this.att3 = name.att3;
x = name2;
}
}
情景2:
public class TT : t
{
public int x { get; set; }
public TT(t name, int name2)
{
this = name;
x = name2;
}
}
有没有办法将基本继承的类“t”作为整个对象传递,而不是必须从基类的属性中分配每个属性?
答案 0 :(得分:1)
有没有办法传递基础继承的类" t"作为整个对象,而不是必须从基类的属性中分配每个属性?
没有。您无法在类(或任何其他方法)的构造函数中重新分配this
。另外,请记住,name
将是对象的引用,而不是对象本身,因此,即使您可以重新分配this
,您也可以# 39; d指向同一个对象,而不是复制其值。
您需要逐个字段地复制源类中的值。无论是在这个构造函数中还是在基本构造函数中执行此操作(如果您有多个要添加此功能的子类,这将是有帮助的),以及您是明确地使用还是使用反射都取决于您。
答案 1 :(得分:0)
您可以在基类中创建copy constructor并像这样使用它:
public class TT : t
{
public int x { get; set; }
public TT(t name, x name2):base(name)
{
x = name2;
}
}
如果您不想手动处理基本拷贝构造函数,可以使用Reflection和Expression Trees自动化它