是否可以使用Yield关键字返回没有循环的值?

Rea*_*mer 0 .net c# keyword

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

我想一个接一个地返回值.我搜索了很多例子,但是他们都展示了yield使用for循环返回值的方法,并且一些解释说yield没有循环就不可能使用关键字.

Jon*_*eet 11

是的,一点没错:

public IEnumerable<int> GetValues()
{
    yield return 10;
    yield return 5;
    yield return 15;
    yield return 23;
    yield return 1;
}
Run Code Online (Sandbox Code Playgroud)

您也可以在yield return语句之间使用其他代码.虽然有一些关于迭代器块中的代码限制,可以多为正常使用的代码构造-循环,条件等.

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

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

如果您有更具体的要求,请提供更多详细信息.