我没有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 };
}
如果您有更具体的要求,请给我们更多详细信息。
完全没问题:
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);