【问题标题】:How to copy one element of a generic collection如何复制通用集合的一个元素
【发布时间】:2011-06-22 06:54:45
【问题描述】:

我需要复制通用集合的一个元素并将其添加到列表中。类似的东西:

private List<CalculationResult> cantileverResults = new List<CalculationResult>();
cantileverResults.Add(cantileverResults[previousIndex]);

这个解决方案的问题是,当我修改新元素时,previousIndex 元素也会发生变化。我相信这是因为它们是引用类型,而不是值类型。我怎样才能将信息从一个元素复制(克隆?)到另一个元素而不进一步相互影响?

【问题讨论】:

    标签: c#


    【解决方案1】:

    添加时需要创建new 对象。

    这可以通过多种方式完成 - 一个辅助方法,它采用您的类型 (CalculationResult) 的对象并返回一个全新的对象。

    也许有一个构造函数重载可以做到这一点。

    有很多方法可以实现这样的事情 - 实现 ICloneable 并让 Clone 方法返回一个新对象。

    例如,如果你要创建一个构造函数重载,你可以这样使用它:

    cantileverResults.Add(new CalculationResult(cantileverResults[previousIndex]));
    

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 2021-12-08
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 2019-04-13
      • 2017-11-28
      相关资源
      最近更新 更多