为什么在Visual Studio 2010中未达到断点? - 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;
        }
    }

我在void main的开头放置了一个调试点。当我连续按f11时,黄色箭头仅覆盖主要功能块,并且调试终止。它根本无法达到“ getnoslessthan5”功能。

参考方案

您实际上并不需要遍历结果,因此永远不会执行GetNosLessThan5函数的实际主体。编译器在后台创建了一个迭代器,但实际上需要枚举该迭代器才能运行函数体。

请参见MSDN Documentation about Iterators。

迭代器可用于单步执行列表和数组之类的集合。

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

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

Visual Studio 2012不会让我调试接口的实现 - c#

我正在LINQ中进行一些查询,想了解它的实现,所以我想到了调试的方法,但是当我尝试这样做时,Visual Studio没有进入接口的实现,不知道为什么会这样。我正在使用Visual Studio Community2015。这是我的代码class Client { static void Main(string[] args) { string[] word…

Visual Studio Cant查找文件-调试 - c#

在Visual Studio 2015中进行调试期间,无法找到文件:xxxx.cs not found You need to find xxx.cs to view the source for the current call stack frame Try one of the following options: - Browse and find …

Visual Studio Code可以增量编译Java Web App项目吗? - java

我是Visual Studio Code的新手。我正在尝试将其与使用Maven的现有Java Web应用程序项目一起使用。我已经下载了推荐的Java扩展,例如Java Extension Pack,Java Maven和Java Tomcat。在IntelliJ(我通常的IDE)中,我可以很快地从Java的少量编辑转到Tomcat中刷新的WAR。如果我编辑文…

在Visual Studio Proff中调试本机代码 - c#

我们在这里使用的解决方案包括C#中的一个项目和C中的另一个项目。是否可以在Visual Studio中调试c代码? c#参考方案 当然,如果您有源代码,请从中创建一个项目,作为调试进行编译(添加断点,监视...)并进行调试。

将文本框传递给方法。使用textchanged事件时。 C#Visual Studio - c#

我的表单上有一个文本框,试图向其中添加一些验证。我已将以下方法附加到textchanged事件。但是我得到一个'没有重载的方法匹配system.EventHandler'错误。我真的不明白为什么要得到它。调用该方法时,是否没有将参数传递给该方法? private void rangeValidate(TextBox textbox) { int mark =…