我只是在编写一些代码,发现自己犯了这个错误
if (stringName == "firstName" || "lastName")
// Do code
显然这是错误的,应该是
if (stringName == "firstName" || stringName == "lastName")
// Do code
但这让我开始思考可读性,第一个会更容易吗?也许有一些逻辑可以说除非指定新的 stringName,否则使用第一个?
真的不是问题,我只是好奇是否有什么我不完全理解编译这样的语句背后的逻辑。
最佳答案
我认为您的提议会使表达式解析规则变得困惑 - 现在,“==”变成了四元运算符 (?),而不是二元运算符。不过,我发现自己缺少 SQL 的“IN”运算符,并使用了类似这样的东西:
if (stringName.In("foo", "bar", "baz"))
{
}
// in an extension method class
public static bool In<T>(this T value, params T[] values)
{
return values.Contains(value);
}
关于C# 运算符和可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615800/