有沒有辦法更新列表中的一個整數。可以說我有一個列表,其中包含一些框中的剩余空間,我想更新它。我怎么能這樣做: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 關注
- 161 瀏覽
添加回答
舉報
0/150
提交
取消