使用Unity。
很抱歉,如果这看起来很荒谬,或者答案很明显。
我有一个foreach循环,循环遍历列表中的某些项目,但只有某些对象需要进一步说明:
(randomValues是一个存储七个随机数的int数组,列表中的每个项目都有一个ID。)
foreach (var item in itemsList)
{
if(randomValues.Contains(item.itemID))
{
//Code not relevant.
}
}
我想拍摄任何合作的物品,并在另一种方法中使用它们。所以我考虑将项目作为方法的参数传递出去,但后来意识到我不知道我是怎么做的,我不知道这样的事情是否可能。
答案 0 :(得分:3)
取决于您的对象/方法的结构。您是否需要将单个项目传递给方法?
foreach (var item in itemsList)
if (randomValues.Contains(item.itemID))
SomeOtherMethod(item);
您是否需要使用此当前方法将列表过滤为仅稍后传递给另一个方法的列表?
foreach (var item in itemsList)
if (randomValues.Contains(item.itemID))
yield return item;
您是否需要将此方法中的匹配项列表传递给另一种方法?
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
if (randomValues.Contains(item.itemID))
matchingItems.Add(item);
SomeOtherMethod(matchingItems);
甚至只使用LINQ:
SomeOtherMethod(itemsList.Where(i => randomValues.Contains(i.itemID)));
等等......
答案 1 :(得分:0)
你走了,
var tempList=new List<int>();//assuming int values in list
foreach (var item in itemsList)
{
if(randomValues.Contains(item.itemID))
{
tempList.Add(item); //add item to temp list
//some code
}
}
return tempList;
答案 2 :(得分:0)
var itemsCopy = itemsList.Where(i => randomValues.Contains(i.itemID)).ToList();
答案 3 :(得分:0)
您可以使用以下代码:
return itemList.where (item => randomValues.Contains(item.itemID));
我选择不使用ToList()从懒惰的评估中受益。