Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么VisualStudio 2010中未达到断点? static void Main(字符串[]args) { List li=新列表(){1,20,30,4,5}; Getnoslessthan 5(李); } 公共静态IEnumerable GetNosLessThan5(列表编号) { foreach(数值中的var v) { if(v_C#_Visual Studio 2010_Visual Studio Debugging - Fatal编程技术网

C# 为什么VisualStudio 2010中未达到断点? static void Main(字符串[]args) { List li=新列表(){1,20,30,4,5}; Getnoslessthan 5(李); } 公共静态IEnumerable GetNosLessThan5(列表编号) { foreach(数值中的var v) { if(v

C# 为什么VisualStudio 2010中未达到断点? static void Main(字符串[]args) { List li=新列表(){1,20,30,4,5}; Getnoslessthan 5(李); } 公共静态IEnumerable GetNosLessThan5(列表编号) { foreach(数值中的var v) { if(v,c#,visual-studio-2010,visual-studio-debugging,C#,Visual Studio 2010,Visual Studio Debugging,我在void main的开始处设置了一个调试点。当我连续按f11时,黄色箭头仅覆盖主功能块,调试终止。它从来没有达到“getnoslessthan5”函数。困惑 您从未实际迭代过结果,因此,GetNosLessThan5函数的实际主体从未执行过。编译器在引擎盖下创建了一个迭代器,但需要实际枚举它才能运行函数体 看 迭代器可用于单步遍历列表和数组等集合 迭代器方法或get访问器对集合执行自定义迭代。迭代器方法使用Yield(visualbasic)或Yield return(C#)语句一次返回一个

我在void main的开始处设置了一个调试点。当我连续按f11时,黄色箭头仅覆盖主功能块,调试终止。它从来没有达到“getnoslessthan5”函数。困惑

您从未实际迭代过结果,因此,
GetNosLessThan5
函数的实际主体从未执行过。编译器在引擎盖下创建了一个迭代器,但需要实际枚举它才能运行函数体

迭代器可用于单步遍历列表和数组等集合

迭代器方法或get访问器对集合执行自定义迭代。迭代器方法使用Yield(visualbasic)或Yield return(C#)语句一次返回一个元素。当到达Yield或Yield-return语句时,将记住代码中的当前位置。下次调用迭代器函数时,将从该位置重新启动执行

通过使用For Each…Next(Visual Basic)或foreach(C#)语句或LINQ查询,可以从客户机代码中使用迭代器


但是,长官,在main里面有一个对函数的调用,对吗?所以函数应该正确执行@callyaser否,您正在调用一个函数,该函数返回一个
IEnumerable
——换句话说,
GetNosLessThan5
返回一个表示“我可以迭代”的对象。它不返回枚举的结果-为此,您必须调用
.ToList
或实际计算数字的类似方法<代码>迭代器是C#中的一种编译器魔法。(这是一种优化技术,因为迭代器的运行成本很高,甚至是无限的。调用方负责决定是否、何时以及运行多长时间)我得到了它,先生。!非常感谢。!
    static void Main(string[] args)
    {
        List<int> li = new List<int>() { 1, 20, 30, 4, 5 };
        GetNosLessThan5(li);
    }

    public static IEnumerable<int> GetNosLessThan5(List<int> numbers)
    {
        foreach (var v in numbers)
        {
            if (v < 5)
                yield return v;
        }
    }