gpt4 book ai didi

c# - 屈服休息; - 疯狂的行为

转载 作者:太空狗 更新时间:2023-10-29 20:55:54 24 4
gpt4 key购买 nike

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace ConsoleApplication4
{
class Program
{
static void Main (string[] args)
{
var test1 = Test1(1, 2);
var test2 = Test2(3, 4);
}

static IEnumerable Test1(int v1, int v2)
{
yield break;
}

static IEnumerable Test2 (int v1, int v2)
{
return new String[] { };
}
}
}

“test1”似乎是一个以 v1 和 v2(参数)作为字段的 IEnumerable,并且“Test1”未被调用。

“Test2”的作品是“设计的”:)

这是怎么回事?

最佳答案

Test1 被调用,但除非您遍历结果,否则您不会在 yield break 上遇到断点。

基本上 Test1 被转换为一个状态机,它为您实现了 IEnumerable...但是您方法的所有主体都在该状态机中,除非您通过调用 GetEnumerator() 然后调用 MoveNext()(或使用 foreach 循环)来使用状态机不会看到你的 body 执行。

查看我的 general iterator article和我的 iterator implementation文章了解更多信息,以及 Eric Lippert 的两篇博文:Psychic Debugging part onePsychic Debugging part two .

关于c# - 屈服休息; - 疯狂的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com