为什么在这个C#表达式中不使用括号时&&运算符会中断?

Tim*_*sée 0 .net c# compiler-errors syntax-error

我的一个朋友正在处理一个C#项目的拉取请求,但由于更改的构建失败而陷入编译器错误.我检查了语法,但确定它是正确的.

对于这个的代码行:

if (PreviewLink && Helpers.IsImageFile(path))
Run Code Online (Sandbox Code Playgroud)

编译器抱怨如下:

错误CS1525:无效的表达式术语'&&'
错误CS1002 :; 预期
错误CS1513:}预期

将此更改为以下修复了编译问题:

if ((PreviewLink) && (Helpers.IsImageFile(path)))
Run Code Online (Sandbox Code Playgroud)

我不明白这里发生了什么,编译器错误msbuild并没有太大帮助.有人可以解释为什么没有括号的第一个表达式无效?我错过了什么?


现在有一些关于代码本身的背景信息.&&运算符两侧的两个表达式都是booleans,请参阅以下两个签名:

public bool PreviewLink { get; set; }
// -- snip --
public static bool IsImageFile(string filePath)
Run Code Online (Sandbox Code Playgroud)

可以在此处找到修复编译问题的实际更改.

对于上面链接的更改,这些是针对失败的,然后成功提交的AppVeyor构建.本地构建给出了相同的结果.

Mat*_*son 5

查看您之前的办理登机手续:https://github.com/ShareX/ShareX/pull/3869/commits/f779c9d74d40f2bb8f7cf3f82a6686d6d9f76fee

它有以下几行:

if (PreviewLink) && Helpers.IsImageFile(path)
Run Code Online (Sandbox Code Playgroud)

这会给你看到的编译错误,所以我认为这就是问题所在.

  • @TimVisée唯一明智的解释是你没有建造你认为你正在建造的东西.你确实有一些会产生错误的代码,这太可疑了.如果你去删除不必要的括号*now*,它是否无法构建,或者现在是否正常? (4认同)