返回多个对象

本文关键字:对象 返回 | 更新日期: 2023-09-27 18:25:57

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

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

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

返回多个对象

为什么不使用 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;
    }
}
  • 有关延迟执行的详细信息。
  • 其中(( 引用
  • 良率参考

您可以通过返回满足条件的项目列表来执行类似操作:

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

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

这将是一个返回类:

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

在您的代码中,您将在某个时候返回此内容。

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

您可以使用 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;
        }
    }
}