0

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

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

4

4 回答 4

11

是的,一点没错:

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

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

于 2013-07-03T06:43:40.827 回答
3

完全没问题:

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

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

于 2013-07-03T06:43:59.927 回答
2

是的,这是可能的,您可以使用 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; 

    }
}
于 2013-07-03T06:45:10.200 回答
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);
于 2013-07-03T06:54:30.423 回答