【发布时间】:2019-06-05 02:25:05
【问题描述】:
我的一个朋友正在处理一个 C# 项目的拉取请求,但遇到编译器错误,因为更改的构建失败。我检查了语法,但确定它是正确的。
对于这新行代码:
if (PreviewLink && Helpers.IsImageFile(path))
编译器抱怨如下:
错误 CS1525:无效的表达式术语“&&”
错误 CS1002: ;预计
错误 CS1513:} 预期
将其更改为以下内容可修复编译问题:
if ((PreviewLink) && (Helpers.IsImageFile(path)))
我不明白这里发生了什么,来自msbuild 的编译器错误并没有太大帮助。有人可以解释为什么没有括号的第一个表达式是无效的吗?我错过了什么?
现在是关于代码本身的一些背景信息。 && 运算符两侧的两个表达式都是booleans,请参见以下两个签名:
public bool PreviewLink { get; set; }
// -- snip --
public static bool IsImageFile(string filePath)
可以找到修复编译问题的实际更改here。
这些是针对failed 和succesful 提交的 AppVeyor 构建,用于上面链接的更改。本地构建给出了相同的结果。
【问题讨论】:
-
这是 .NET 的哪个版本?
-
@Fabjan 我相信它是 4.6.2,基于
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>在csproj文件中。 AppVeyor 上的构建似乎使用了Visual Studio 2017图像。不过对 C# 不太熟悉。 -
你向我们展示的任何东西都无法解释这一点......
-
@MatthewWatson 注意的(失败的)表达式在this 文件中。还有什么我应该补充的吗?
-
确实,两个代码示例都可以正常工作。我假设您在某处缺少
;或{或}并专注于不同的问题。考虑先检查其他错误消息。
标签: c# .net compiler-errors syntax-error