这个foreach可以改善吗?

时间:2019-04-30 09:05:02

标签: c# foreach

foreach旨在浏览列表,当找到匹配项时,它返回 next 元素。可以改善吗?

public static string GetCommandLineArg(string arg)
{
    var doreturn = false;

    foreach (var item in Environment.GetCommandLineArgs())
        if (doreturn)
            return item;
        else if (arg == item)
            doreturn = true;

    return null;
}

我关心的部分是下一项的退还。

内部if语句很混乱,似乎不需要使用额外的变量。是否有一个简单的函数调用或属性可以与foreach一起使用来返回下一个项目?

示例:https://dotnetfiddle.net/pFc4dU

3 个答案:

答案 0 :(得分:10)

Linq的方法

netsh http add sslcert ipport=0.0.0.0:44302 certhash=<thumbprint> appid={id from step 3}

https://dotnetfiddle.net/zsIhtv

答案 1 :(得分:1)

它一定是前叉环吗? for循环会更简单吗?

var items = Environment.GetCommandLineArgs();
    for (int i = 0; i < items.Count(); i++)
    {
        var item = items[i];
        if (arg == item && i < items.Count())
            return items[i+1];
    }

答案 2 :(得分:0)

我认为您不应该总是搜索右键,而应该将整个参数解析为键值集合,然后按键检索它们:

async function(){

这可能是最快的方法。 如@Icepickle所述,您可以使用CommandLine nuget包进行Parse实现,也可以根据自变量的语法自行编写。