C#编译器在每次编译时都不会一次报告所有错误?

前端之家收集整理的这篇文章主要介绍了C#编译器在每次编译时都不会一次报告所有错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我编译这个项目时,它在错误列表窗口中显示为400个错误,然后我去错误站点,修复一些,数字表示120个错误,然后再修复一些,下一个编译报告如400再次.我可以看到错误列表窗口中出现了不同的文件,所以我认为编译器会在一定数量错误之后中止?

如果是这样,这是什么原因?即使它们超过10K,它不应该收集项目中存在的所有错误

解决方法

我一直在写一篇博客文章.

您可能只是针对报告的错误数量进行了一些硬编码的限制.您也可能会遇到一个更微妙和有趣的情况.

在命令行编译器和IDE编译器中尝试管理错误报告有很多启发式.两者都可以保持对用户的管理,并使编译器更加健壮.

简单来说,编译器的工作方式是尝试通过一系列的阶段获得程序,您可以在这里阅读:

http://blogs.msdn.com/b/ericlippert/archive/2010/02/04/how-many-passes.aspx

这个想法是,如果早期阶段出现错误,我们可能无法在没有(1)进入无限循环,(2)崩溃或(3)报告疯狂的“级联”错误的情况下成功完成后期阶段.那么会发生什么,你得到一个错误,你修复它,然后突然下一个编译阶段可以运行,它发现一堆更多的错误.

基本上,如果程序如此混乱,甚至无法验证有关其类和方法的基本事实,那么方法体不能可靠地给出错误.如果我们无法分析一个lambda体,那么我们无法将其转换成表达式树可靠地给出错误.等等;有很多情况下,后期阶段需要知道以前的阶段完成没有错误.

这个设计的最重要的一点是(1)首先得到最“根本”的错误,没有很多嘈杂,疯狂的级联错误,(2)编译器更强大,因为它不必尝试对语言的基本不变量被破坏的程序进行分析.当然,你的场景是不利的,你有五十个错误,你们全部修复,突然有五十个出现.

猜你在找的C#相关文章