请考虑以下代码段:
class Program {
static void Main(string[] args) {
Console.WriteLine(Test().ToString());
}
static IEnumerable<char> Test() {
foreach (var ch in "test")
yield return ch;
}
static IEnumerable<char> TestOk() {
return "test";
}
}
Run Code Online (Sandbox Code Playgroud)
Test().ToString() 返回"ConsoleApplication1.Program + d__0"而不是预期的"test".
Test()方法甚至没有执行 - 只返回它的名字!第二种方法TestOk()效果很好.
到底是怎么回事?