Visual Studio 2012不允许我调试Interface的实现

时间:2016-11-09 21:08:47

标签: c# visual-studio visual-studio-debugging

我正在浏览LINQ中的一些查询并希望了解它的实现,所以我想调试相同但是当我尝试这样做时,Visual Studio没有进入接口的实现。知道为什么。我正在使用Visual Studio Community 2015.这是我的代码

class Client
    {
        static void Main(string[] args)
        {
            string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
            var result = words.OrderBy(a => a, new CaseInsensitiveComparer());
            Console.Read();
        }
    }
    public class CaseInsensitiveComparer : IComparer<string>
    {
        public int Compare(string x, string y)
        {
            Console.WriteLine("x is " + x + " & y is " + y+" the value is "+ string.Compare(x, y, StringComparison.OrdinalIgnoreCase));
            return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
        }
    }

最可悲的部分是我也无法在控制台窗口中打印任何内容

  

Console.WriteLine(&#34; x是&#34; + x +&#34;&amp; y是&#34; + y +&#34;值是&#34; +   string.Compare(x,y,StringComparison.OrdinalIgnoreCase));

我知道有很多重复的问题,但我尝试了一切,但没有一个适合我。

  1. 我尝试清理解决方案
  2. 删除Obj和Bin文件夹
  3. 关闭解决方案并再次打开并重建它 没有什么对我有用。
  4. 更新1

    我已将调试器放在IComparer的实现中 enter image description here

2 个答案:

答案 0 :(得分:5)

只有在使用结果时才会评估.OrderBy()调用(与许多linq方法一样)。由于您没有使用结果,因此代码实际上并未运行。

.ToList()放在最后,它将运行:

var result = words.OrderBy(a => a, new CaseInsensitiveComparer()).ToList();

您可能无法进入.OrderBy()调用,但您可以在比较器实现中添加断点。

答案 1 :(得分:0)

OrderBy返回IEnumrable 要设置Linq查询,请在ToList()子句

之后添加OrderBy
 var result = words.OrderBy(a => a, new CaseInsensitiveComparer()).ToList();