【发布时间】:2017-03-25 20:13:35
【问题描述】:
Visual Studio 看到的“语法错误”和“编译器错误”有什么区别?或者,换一种说法,为什么有些“编译时”错误用 red 波浪线下划线,而有些用 blue 波浪线下划线?这是一个例子:
上面红色下划线的错误有这样的描述:
方法 'ValidateFilteredRecipient' 没有重载需要 6 个参数
蓝色下划线的错误有这样的描述:
'ValidateBuild':不能在静态类中声明实例成员
我不清楚这两个错误的区别特征是什么。
我认为找到答案将是小菜一碟:我只是用谷歌搜索,第一个结果将是一个 MSDN 页面,充分阐述了这个主题;然而,非常令人惊讶的是,事实并非如此。我开始尝试用谷歌搜索颜色(因为我还不知道红色表示“语法错误”而蓝色表示“编译器错误”):
visual studio red underline vs. blue underline
那里没有帮助。然后我尝试了这些搜索:
visual studio error underline color meanings
visual studio underline color meanings
我可以看到这无济于事,所以我搜索了更多内容并找出了在 VS 中设置颜色的位置:工具 > 选项 > 环境 > 字体和颜色。顺便说一句,无法在此处搜索庞大的列表非常烦人,但我发现“语法错误”带有红色波浪下划线,而“编译器错误”带有蓝色波浪下划线。
那么这些是什么意思?返回谷歌:
visual studio compiler error vs. syntax error
没有什么相关的。这是我从 MSDN 找到的最接近的:
Fonts and Colors, Environment, Options Dialog Box
此页面包含以下条目:
编译器错误 -- 编辑器中的蓝色波浪线表示编译器错误。
和
语法错误 -- 解析错误。
一点帮助都没有——强调“根本”。我一直认为我至少知道什么是“语法错误”,Wikipedia 同意:
语法错误是字符序列的语法错误 或旨在以特定程序编写的令牌 语言。
另外,here is what what it has for syntax:
计算机语言的语法是定义 被认为是正确的符号组合 该语言的结构化文档或片段。
所以,从上面回到我的“语法错误”:
方法 'ValidateFilteredRecipient' 没有重载需要 6 个参数
根据我在此处包含的定义,这是一个语法错误吗?实际上,在我看来,我得到的“编译器错误”更符合语法错误的定义:
'ValidateBuild':不能在静态类中声明实例成员
有人可以帮我解决这个问题吗?
【问题讨论】:
-
@AlfieGoodacre --“你不能做的事情,或者编译器不允许你做的事情”
-
不情愿地为一个很好地组合在一起的问题投票,但当我确切地意识到你正在深入研究什么时,这也是一个有点毛茸茸的狗故事。红色波浪线,蓝色波浪线,我们不能相处融洽吗?
-
@JeroenMostert -- 我完全理解。但它不会打扰你吗?我的意思是,这是一个商业的、企业级的 IDE……为了解决一个难题,至少……为什么它们不只是一种错误类型?为什么没有记录?
-
天哪,我很想知道为什么我投了反对票。严重地?如果这是一个“没用”的东西,那么 MS 为什么会费心区分颜色呢?显然 MS 认为这样做很有用。
-
有趣的是,在我的情况下,我看到这两种错误都有红色下划线。我实际上不记得上次我是什么时候看到蓝色下划线的 :) 可能是因为 Resharper...
标签: c# .net visual-studio compiler-errors syntax-error