【发布时间】:2015-05-18 15:46:47
【问题描述】:
使用 Unity。
对不起,如果这看起来很荒谬,或者答案很明显。
我有一个 foreach 循环,它循环遍历列表中的某些项目,但只有某些对象受制于一组进一步的指令:
(randomValues 是一个 int 数组,里面存储了 7 个随机数,列表中的每一项都有一个 ID。)
foreach (var item in itemsList)
{
if(randomValues.Contains(item.itemID))
{
//Code not relevant.
}
}
我想拿走任何使用过的物品并以另一种方法使用它们。所以我考虑将项目作为方法的参数传递出去,但后来意识到我不知道该怎么做,也不知道这样的事情是否可能。
【问题讨论】:
-
不清楚您要做什么(或者 Unity 是否相关)。您是尝试将列表传递给此方法还是将
item传递给另一个方法? -
用
othermethod(item)替换//Code not relevant -
尝试使用 Linq:类似
itemsList.Where(item => randomValues.Contains(item.itemID)) -
@DmitryBychenko 如果循环中有大量逻辑并且如果在 foreach 循环之外调用它,则可能不适用,您将迭代两次。
-
您遵循了正确的思维过程——通过返回值的子集,您增加了代码的模块化。通过让您的方法创建一个新对象并返回它,而不是修改全局集合,您可以使您的方法成为一个纯方法,这是一件很棒的事情。
标签: c# list methods parameters