C# 有没有办法缩短比较时间
我怎样才能把它缩短C# 有没有办法缩短比较时间,c#,tuples,comparison,C#,Tuples,Comparison,我怎样才能把它缩短 string veryLongVariableName; if (veryLongVariableName == "a" || veryLongVariableName == "b" || veryLongVariableName == "c"|| veryLongVariableName == "d"|| veryLongVariableName == "e"|| veryLongVariableName == "f") 像这样的事情可能吗 if (veryLongVa
string veryLongVariableName;
if (veryLongVariableName == "a" || veryLongVariableName == "b" || veryLongVariableName == "c"|| veryLongVariableName == "d"|| veryLongVariableName == "e"|| veryLongVariableName == "f")
像这样的事情可能吗
if (veryLongVariableName == ("a", "b", "c", "d", "e", "f"))
if (veryLongVariableName == ("a" || "b" || "c" || "d" || "e" || "f"))
你差一点就成功了
if (new [] {"a", "b", "c", "d", "e", "f"}.Contains(veryLongVariableName))
注意:每次你叫它时,它都会进行分配冒着让你的长线变长的风险,我可能会选择一个
开关
:
开关(veryLongVariableName)
{
案例“a:
案例“b:
案例“c:
案例“d:
案例“e:
案例“f:
//你的东西
打破
}
(a)可能是一个实用工具IsSomething(…)
方法,它在条件下返回true
或false
,在所示代码中只返回一个if(IsSomething(…){…}
)
原因:它清晰、明显且高效(无分配;由编译器优化)
例如,IsSomething
:
静态布尔值是某个字符串(字符串字符串)=>字符串开关{
“a”=>正确,
“b”=>正确,
“c”=>正确,
“d”=>正确,
“e”=>正确,
“f”=>正确,
_=>错误,
};
// ...
如果(IsSomething(veryLongVariableName)){…}
您可以在列表中设置所有字符串
条件,然后:
var match = myList
.FirstOrDefault(x => x.Contains(veryLongVariableName));
if(match != null)
//Do stuff
我们来回答你的问题吗?a:应该是包含,而不是任何?b:这是相当合理的分配-对某些事情来说很好,但一般来说可能不是好的建议case@MarcGravell是的,周五下午5点的时候有点紧张,你是对的,这不是伟大的编码堡垒。我会记下分配可能会被避免注意,在某个地方将它创建为一个静态数组是非常困难的;但是……这有其优点和优点。感谢您快速的回答。我太想知道是否值得为了一点清晰而这样做,这是一种非常昂贵的编写“包含”的方法检查;每次都分配捕获上下文和委托…我甚至不确定它是否执行相同的操作-这看起来有点像嵌套(锯齿状)场景?是的,同意,但这取决于OP真正想要什么。编译器友好还是代码整洁。这说明了“昂贵”的部分(尽管我认为它在这里是不必要的昂贵);它与“同一件事”无关