是否可以使用Yield关键字返回不带循环的值

本文关键字:循环 返回 可以使 Yield 关键字 是否 | 更新日期: 2023-09-27 18:20:58

我没有for循环,我想从一个方法返回5个整数。这可能吗?你能给我举个例子吗?

我想一个接一个地返回值。我搜索了许多示例,但它们都显示了使用for循环返回yield值的方法,一些解释说,如果没有循环,就不可能使用yield关键字。

是否可以使用Yield关键字返回不带循环的值

是的,绝对:

public IEnumerable<int> GetValues()
{
    yield return 10;
    yield return 5;
    yield return 15;
    yield return 23;
    yield return 1;
}

yield return语句之间也可以有其他代码。尽管迭代器块中的代码有一些限制,但您可以大多数使用正常的代码结构-循环、条件等。

另一方面,如果不需要任何其他代码,为什么不返回一个列表或数组(或类似的东西)呢?

public IEnumerable<int> GetValues()
{
    return new int[] { 10, 5, 15, 23, 1 };
}

如果您有更具体的要求,请给我们更多的细节。

非常好:

IEnumerable<int> myFunc()
{
    yield return 1;
    yield return 1;
    yield return 1;
    yield return 1;
    yield return 42;
}

e: 更糟的是,我注意到我的代码只返回了四个整数。BRB,去喝咖啡。

是的,可以使用yield关键字返回多个值,而不使用for循环,
下面是一个很好的例子:

// yield-example.cs
using System;
using System.Collections;
public class List
{
   IEnumerable <int> MyMethod()
    {
            yield return result1 ; 
            yield return result2 ; 
            yield return result5 ; 
            yield return result6; 
    }
}

我希望从方法返回5个整数

你所需要的只是out参数:

 void MyMethod(out int a, out int b, out int c)  { a = 1; b = 2; c = 3; }
 int x, y, z;
 MyMethod(out x, out y, out z);