为什么这段代码会导致shipment.Items.Count和combinedShipment.Items.Count等于零?
private static InboundShipment CombineLikeIsbns(InboundShipment shipment)
{
// shipment.Items has a count of 3
var distinctIsbns = shipment.Items.Select(i => i.ISBN).Distinct().ToList();
var combinedShipment = shipment;
combinedShipment.Items = new List<InboundShipmentItem>();
// Now both combinedShipment and shipment have an empty List in the .Items property
...
return combinedShipment;
}
Run Code Online (Sandbox Code Playgroud)
[编辑]当我将combinedShipment.Items设置为相同时,我该怎么做以避免出货.物品设置为新列表?
这个说法:
var combinedShipment = shipment;
Run Code Online (Sandbox Code Playgroud)
拷贝的价值shipment成combinedShipment.假设InboundShipment是一个类,值shipment是一个引用 - 而不是一个对象本身.
所以现在我们有两个变量都指向同一个对象.使用哪个变量来对对象进行更改无关紧要 - 通过两个变量可以看到更改.
如果要创建原始对象的新"副本",则必须明确地执行此操作.很难确切地知道你需要做什么,因为你没有给我们提供有关InboundShipment类型的更多信息.
有关更多详细信息,请参阅有关值类型和引用类型的文章.请注意,这是C#和.NET 的重要组成部分,在进一步研究之前,您应该对此充满信心 - 在您获得了一个高级主题(例如LINQ(带有lambda表达式,延迟执行等)之后)很难理解掌握基础知识.