gpt4 book ai didi

c# - 将列表中的所有值复制/克隆到 C# 中的另一个列表

转载 作者:太空狗 更新时间:2023-10-30 00:39:30 25 4
gpt4 key购买 nike

我有课

public class Car()
{
public string Name;
public string Model;
}

我有属性(property)

List<Car> CarsA = new List<Car>();
CarsA.Add(new Car(){Name = "Verna",Model="Hyundai"});
CarsA.Add(new Car(){Name = "X1",Model="Bmw"});

我还有一个属性(property)

List<Car> CarsB = new List<Car>();

现在我想添加从 CarsA 到 CarsB 的克隆/复制所有条目而不使用 CarsA 属性当前实例

(即我想为每个条目创建新对象并添加它)。

有点像

foreach(var car in CarsA)
{
Car newCar =new Car();
newCar.Name = car.Name;
newCar.Model = car.Model;
CarsB.Add(newCar);
}

如果我不想实现 ICloneable 并且我没有复制构造函数怎么办?

最佳答案

您可能会考虑 LINQ 解决方案:

List<Car> CarsB = (from c in CarsA
let a = new Car() { Name = c.Name, Model = c.Model }
select a).ToList();

因为NameModel都是string类型(不可变),所以这个操作是安全的。

我认为它的可读性很好。

相同但查询语法:

CarsB = CarsA.Select(c => new Car(){ Name = c.Name, Model = c.Model }).ToList();

Note: If, suppose, the Model is not string but a class, then the operation above a = new Car() must be slightly change to something which really clone all the items in the model (something like this: Model = c.Model.Clone()) and not just referring to it (Model =
c.Model
)

关于c# - 将列表中的所有值复制/克隆到 C# 中的另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com