我没有
for
循环,我想从方法返回 5 个整数。这可能吗?你能给我举个例子吗?
我想一个接一个地返回值。我搜索了很多例子,但它们都展示了使用
yield
循环返回 for
值的方法,并且一些解释说,不可能在没有循环的情况下使用 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 };
}
如果您有更具体的要求,请给我们更多详细信息。
下面是一个很好的例子:
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;
}
}
IEnumerable<int> myFunc()
{
yield return 1;
yield return 1;
yield return 1;
yield return 1;
yield return 42;
}
e:打败了我......雪上加霜的是,我注意到我的代码只返回了四个整数。 BRB,去喝咖啡。
我想从该方法返回 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);