当元素不存在时,如何编写从数组中指定默认值?

时间:2015-10-25 04:51:06

标签: c#

这种情况一直困扰着我。举个例子,假设一个控制台应用程序希望将filepath作为命令行参数。

string first = args[0]; 

但如果没有参数,则会发生错误。我想我可以做类似以下的事情:

string first = (args[0]!=null) ? args[0] : "c:\";

我正在寻找的东西更优雅:

string first = (MyTryParse(args[0],"c:\");

我可以将其作为扩展名编写,但是由于args [0]在调用方法之前会抛出异常,因此无法工作。

4 个答案:

答案 0 :(得分:3)

同时检查args[0]是否为空:

public string MyTryParse(string[] args, int index, string defaultVal)
{
    return index < args.Length ? (args[index] ?? defaultVal) : defaultVal
}
...
string first = MyTryParse(args, 0, "c:\");

答案 1 :(得分:1)

通过args代替args[0]

试试这个

public string MyTryParse(string[] args, string defaultVal) {
    return args.Length > 0 ? args[0] : defaultVal
}

答案 2 :(得分:1)

相同的方法,但使用extension方法,

public static class Extensioin
{
    public static string MyTryParse(this string[] args, string defaultVal)
    {
        return args.Length > 0 ? args[0] : defaultVal;
    }
}

并使用上述方法,

string first = args.MyTryParse(@"c:\");

答案 3 :(得分:1)

为此目的,LINQ已经有DefaultIfEmpty方法:

string first = args.DefaultIfEmpty("c:\\").First();