如何使这个代码更加优化 - 如何更换forloop.

Sre*_*r P 0 c# linq optimization

如果此代码段,我该如何提高性能.

bool OrSetFinalResult =true;
string OrSet = "(1&1)|0";
string[] AndSets = OrSet.Split('&');
foreach (string AndSet in AndSets)
{
    if (AndSet == "0")
    {
        // A single "false" statement makes the entire And statement FALSE
        OrSetFinalResult = false;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用任何LINQ表达式删除ForEach循环?

Jon*_*eet 5

听起来好像:

if (AndSets.Contains("0"))
{
    OrSetFinalResult = false;
}
Run Code Online (Sandbox Code Playgroud)

根本不需要LINQ.当然它仍然在内部循环,但它仍然更简单.

编辑:如评论中所述,您还可以使用:

OrSetFinalResult = OrSetFinalResult && !OrSet.Split('&').Contains("0");
Run Code Online (Sandbox Code Playgroud)

  • @norlando:这是我的第一个答案(嗯,倒置),但不一定.假设`OrSetFinalResult`*已经*false,但那里没有任何"0"元素.我们不一定要将其设置为true. (2认同)
  • `OrSetFinalResult = OrSetFinalResult &&!OrSet.Split('&').包含("0")`结合@ norlando的方法,你关注`OrSetFinalResult`可能已经是假的,在这种情况下跳过整个事情的额外好处. (2认同)