我的一个 friend 正在处理一个 C# 项目的拉取请求,但由于更改的构建失败,因此遇到了编译器错误。我检查了语法,但确定它是正确的。
对于这行新代码:
if (PreviewLink && Helpers.IsImageFile(path))
编译器提示以下内容:
error CS1525: Invalid expression term '&&'
error CS1002: ; expected
error CS1513: } expected
将其更改为以下内容可修复编译问题:
if ((PreviewLink) && (Helpers.IsImageFile(path)))
我不明白这里发生了什么,以及来自
msbuild
的编译器错误不太有帮助。有人可以解释为什么没有括号的第一个表达式是无效的吗?我错过了什么?现在有一些关于代码本身的背景信息。
&&
两边的两个表达式运算符是 bool
eans,请参阅以下两个签名:public bool PreviewLink { get; set; }
// -- snip --
public static bool IsImageFile(string filePath)
可以找到修复编译问题的实际更改 here .
这些是 failed 的 AppVeyor 版本然后 succesful提交,用于上面链接的更改。本地构建给出了相同的结果。
最佳答案
查看您之前的签到:https://github.com/ShareX/ShareX/pull/3869/commits/f779c9d74d40f2bb8f7cf3f82a6686d6d9f76fee
它具有以下行:
if (PreviewLink) && Helpers.IsImageFile(path)
这会给你你看到的编译错误,所以我认为这就是问题所在。
关于c# - 为什么在此 C# 表达式中不使用括号时 && 运算符会中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54124921/