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

时间:2019-01-10 08:53:34

标签: c# .net compiler-errors syntax-error

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

对于此 new 代码行:

if (PreviewLink && Helpers.IsImageFile(path))

编译器抱怨以下内容:

  

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

将其更改为以下内容可解决编译问题:

if ((PreviewLink) && (Helpers.IsImageFile(path)))

我不明白这里发生了什么,msbuild的编译器错误也不太有用。有人可以解释为什么不带括号的第一个表达式无效吗?我想念什么?


现在有关代码本身的一些背景信息。 &&运算符两侧的两个表达式均为bool eans,请参见以下两个签名:

public bool PreviewLink { get; set; }
// -- snip --
public static bool IsImageFile(string filePath)

可以找到here来解决编译问题的实际更改。

这些是AppVeyor为failed构建的,然后是succesful提交的,用于上面链接的更改。本地版本提供了相同的结果。

1 个答案:

答案 0 :(得分:5)

查看您之前的签到地址:https://github.com/ShareX/ShareX/pull/3869/commits/f779c9d74d40f2bb8f7cf3f82a6686d6d9f76fee

它具有以下行:

if (PreviewLink) && Helpers.IsImageFile(path)

那会给您您所看到的编译错误,所以我认为这是问题所在。