猿问

如何更新列表中的一个整数

有没有办法更新列表中的一个整数。


可以说我有一个列表,其中包含一些框中的剩余空间,我想更新它。我怎么能这样做:


foreach (var itemToStore in items) {

if (boxCapacities.Any(bc => bc >= itemToStore.Size())) {

    var availableBox = boxCapacities.First(tc => (bc => bc >= itemToStore.Size());

    availableBox -= itemToStore.Size();

}

}


上面代码的问题是列表中有整数,它们是按值复制的,所以当我更新 availableBox 变量时,我没有更新列表中的变量。


有没有一种优雅的方法可以解决这个问题,而无需创建一个新对象来封装整数?


繁星coding
浏览 130回答 2
2回答

慕村9548890

正如 Ron Beyer 所说,使用 FindIndex 可以解决问题var index = boxCapacities.FindIndex(bc => bc >= itemToStore.Size());if (index != -1) {    boxCapacities[index] -= itemToStore.Size();}如果它们更优雅或性能更好,我仍然愿意接受其他解决方案

慕雪6442864

可能更复杂,但只是为了探索您可以拥有的可能性foreach (var itemToStore in items){    var idx = boxCapacities.Select((x, i) => new {index=i,ok= (x>=itemToStore.Size())})                           .FirstOrDefault(k => k.ok);    if(idx != null)        boxCapacities[idx.index] -= itemToStore.Size();}
随时随地看视频慕课网APP
我要回答