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

时间:2013-07-03 06:42:01

标签: c# .net keyword

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

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

4 个答案:

答案 0 :(得分: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 };
}

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

答案 1 :(得分:3)

完全没问题:

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

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

答案 2 :(得分: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; 

    }
}

答案 3 :(得分: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);