返回多个对象

时间:2014-10-09 03:08:57

标签: c#

我有一个检查项目列表的方法,如果满足方法中的条件,则返回项目。问题是,有时我需要返回多个项目才能在屏幕上绘制。因此,如果我需要绘制2或3个项目,则只有第一个项目。这可能是我的绘图代码的问题,但我还不确定。

foreach(Item i in List)
{
    if conditions are met
    {
        return i

有没有办法检查此方法中返回的多个项目?

4 个答案:

答案 0 :(得分:8)

为什么不使用LINQ?

// return an enumerable
return items.Where( item => item.SomeCondition );

或者

// execute once and store in a list
return items.Where( item => item.SomeCondition ).ToList();

这两个例子之间有一个重要的区别。第一个返回IEnumerable,可用于迭代列表。第二个示例遍历项目一次并将它们存储在列表中。

这也是yield的候选人。与第一个示例一样,它返回IEnumerable<T>

foreach( var item in items )
{
    if( conditions ){
         yield return item;
    }
}

答案 1 :(得分:1)

您可以通过返回符合条件的项目列表来执行此类操作:

List<YourItemType> itemsMeetingCondition = new List<YourItemType>();
foreach(Item i in List)
{
    if( conditions are met)
    {
        itemsMeetingCondition.Add(i);
    }
}
return itemsMeetingCondition;

答案 2 :(得分:0)

第一种方法是创建一个具有2个或更多属性的类。

这将是一个返回类:

public class ColorSelection
    {
        public string ColorCode { get; set; }
        public bool IsBold { get; set; }

    }

在你的代码中你会在某个时候返回它。

如果它们都是相同类型,则使用第二种方式。例如,您将返回List<string>

答案 3 :(得分:0)

您可以使用yield关键字并返回IEnumerable:

  

产量与foreach循环相互作用。它是一个上下文关键字:   yield只是某些语句中的关键字。它允许每一个   只在需要时才生成foreach循环中的迭代。通过这种方式   它可以提高性能。

http://www.dotnetperls.com/yield

public IEnumerable<Item> GetItems()
{
    foreach(Item i in List)
    {
        if conditions are met
        {
            yield return i;
        }
    }
}