Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法缩短比较时间_C#_Tuples_Comparison - Fatal编程技术网

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真正想要什么。编译器友好还是代码整洁。这说明了“昂贵”的部分(尽管我认为它在这里是不必要的昂贵);它与“同一件事”无关