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

问题描述 投票:0回答:4

我没有

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

我想一个接一个地返回值。我搜索了很多例子,但它们都展示了使用

yield
循环返回
for
值的方法,并且一些解释说,不可能在没有循环的情况下使用
yield
关键字。

c# .net keyword
4个回答
12
投票

是的,绝对是:

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 }; }

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


3
投票
是的,这是可能的,您可以使用yield关键字返回多个值而不使用for循环,

下面是一个很好的例子:

using System; using System.Collections; public static class CodeExamples { public static IEnumerable<int> YieldExampleWithoutLoop() { yield return 0; yield return 1; yield return 2; yield return 3; } }
    

3
投票
完全没问题:

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

e:打败了我......雪上加霜的是,我注意到我的代码只返回了四个整数。 BRB,去喝咖啡。


1
投票
我想从该方法返回 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);
    
© www.soinside.com 2019 - 2024. All rights reserved.