有没有办法更新列表中的一个整数。可以说我有一个列表,其中包含一些框中的剩余空间,我想更新它。我怎么能这样做: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 变量时,我没有更新列表中的变量。有没有一种优雅的方法可以解决这个问题,而无需创建一个新对象来封装整数?
2 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
正如 Ron Beyer 所说,使用 FindIndex 可以解决问题
var index = boxCapacities.FindIndex(bc => bc >= itemToStore.Size());
if (index != -1) {
boxCapacities[index] -= itemToStore.Size();
}
如果它们更优雅或性能更好,我仍然愿意接受其他解决方案
慕雪6442864
TA贡献1812条经验 获得超5个赞
可能更复杂,但只是为了探索您可以拥有的可能性
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();
}
- 2 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消