为什么这样做:
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/