我有自定义Rule
对象的一些数据成员。一些整数,字符串,DateTimes,我在“复制构造函数”中处理了所有这些,您将在下面看到。我已经取代了数据成员的实际名称以保护隐私。
public class Rule
{
private int someint1;
private int someint2;
private string string1;
private string string2;
private List<Rule> children;
public Rule(Rule other)
{
other = (Rule)this.MemberwiseClone(); //Handles my integers and DateTimes.
other.string1 = String.Copy(string1);
other.string2 = String.Copy(string2);
//Now handle List<Rule> children;-----------
}
}
我的问题是因为我的Rule类中有一个具有递归性质的List。 (规则可能有其他规则......等等。)我如何处理该子列表的深层副本(子规则)?如果列表不为空,我是否需要预先循环并调用我的复制构造函数?
**不应该很重要,但我从Sql而不是在飞行结构中填充这些信息。
**编辑 标记为潜在重复的问题并未解决我在CustomObj类中具有List的问题。它解决了一个不属于自己类型的类中的List,因此我认为这个问题值得一个不重复的单独问题。
答案 0 :(得分:0)
public class Rule
{
private int someint1;
private int someint2;
private string string1;
private string string2;
private List<Rule> children;
public Rule()
{
}
public Rule(Rule other)
{
other = (Rule)this.MemberwiseClone(); //Handles my integers and DateTimes.
other.string1 = String.Copy(string1);
other.string2 = String.Copy(string2);
other.children = children.Select(x => x.clone()).ToList();
}
public Rule clone()
{
Rule clone = new Rule();
clone.children = this.children;
return clone;
}
}