c# - 为什么这不能在 C# 中编译?

标签 c# .net

为什么这样做:

if ("xx".StartsWith("x"))
{

}

但这不是:

if ("xx" + "xx".StartsWith("x"))
{

}

编译器提示错误 CS0029:无法将类型“string”隐式转换为“bool”

最佳答案

成员访问操作符.的优先级高于+操作符。

检查 C# Operators (MSDN)对于 C# 运算符优先级。特别是它将 x.y 列为“主要”,它高于“附加”中的二进制 +

这意味着 "xx"+ "xx".StartsWith("x") 被解释为
"xx"+ ("xx".StartsWith("x")) 并且无法编译。它连接了一个 string 和一个 bool,后者为您提供了一个 string。但是您不能在 if 语句中使用 string 作为条件,因为它不是 bool(并且没有实现 true 运算符)

您似乎希望它被解释为 ("xx"+ "xx").StartsWith("x")),您首先连接字符串然后调用 StartsWith 在组合字符串上。

关于c# - 为什么这不能在 C# 中编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900324/

相关文章:

javascript - .NET 的 Enumerable.Select 是否有对应的 javascript/jQuery?

c# - 控制文档中未给出串行命令的电机

c# - 如何将 ppt 文件保存到 WPF 数据库并检索它们进行编辑?

c# - 如何获取当前日期和时间?

c# - 如何在 C# 中更改 Excel 工作表列的格式?

.net - 生成 100 x 100 数据点时来自 Math.NET 的内存异常

用于排版文档(PDF 或类似文件)的 .NET 库?

c# - "using <namespace>;"指令能否在 .NET 中变得更高效?

c# - 使用 LINQ 将字段从 Listitem 转换为 List<T>

c# - 系统.BadImageFormatException : 64bit MVC 2 project - with step by step instruction to reproduce the error