yield return 在被调用方方法中不起作用
yield return does not work in callee method
我是 C# 新手,这是我的代码:
class Program {
public static IEnumerable<string> enum2() {
yield return "A";
yield return "B";
}
public static IEnumerable<string> enum1() {
enum2();
yield return "C";
enum2();
yield return "C";
}
static void Main(string[] args) {
foreach (string s in enum1()) {
Console.WriteLine(s);
}
Console.ReadLine();
}
}
预计:
A
B
C
A
B
C
但是得到了:
C
C
调用跟踪是 Main -> enum1() -> enum2()
但为什么 yield return
在 enum2()
中不起作用?
您没有对 enum2
的结果执行任何操作。您正在创建迭代器,但从不迭代集合。
您的代码应如下所示:
public static IEnumerable<string> enum1()
{
foreach(var e in enum2())
yield return e;
yield return "C";
foreach(var e in enum2())
yield return e;
yield return "C";
}
我是 C# 新手,这是我的代码:
class Program {
public static IEnumerable<string> enum2() {
yield return "A";
yield return "B";
}
public static IEnumerable<string> enum1() {
enum2();
yield return "C";
enum2();
yield return "C";
}
static void Main(string[] args) {
foreach (string s in enum1()) {
Console.WriteLine(s);
}
Console.ReadLine();
}
}
预计:
A
B
C
A
B
C
但是得到了:
C
C
调用跟踪是 Main -> enum1() -> enum2()
但为什么 yield return
在 enum2()
中不起作用?
您没有对 enum2
的结果执行任何操作。您正在创建迭代器,但从不迭代集合。
您的代码应如下所示:
public static IEnumerable<string> enum1()
{
foreach(var e in enum2())
yield return e;
yield return "C";
foreach(var e in enum2())
yield return e;
yield return "C";
}