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

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

我的一个 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/

相关文章:

java - 使用 Activity 目录在 java 或 .net 应用程序中自动验证用户

c - 如何在C中包含头文件

c# - 枚举继承了 2 个类的类的列表

c# - NAudio 将样本缓冲区转换为波形缓冲区

c# - 如何扩展继承的方法而不是覆盖它?

c# - 该名称在当前上下文中不存在

compiler-errors - 编译失败,因为缺少Gnucobol DB2程序的库

c# - 在 ASP NET Core 中添加服务引用

c# - 此行已属于此表

c# - 在没有try catch的情况下检查文件是否正在使用?