当元素不存在时,如何从数组编写赋值默认值

本文关键字:数组 赋值 默认值 不存在 元素 | 更新日期: 2023-09-27 18:19:03

这种情况一直困扰着我。例如,假设控制台应用程序期望filepath in作为命令行参数。

string first = args[0]; 

,但如果没有参数,则会发生错误。我想我可以这样做:

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

我想要的是一些更优雅的东西,比如:

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

我可以把它写为一个扩展,但是这不起作用,因为args[0]会在方法被调用之前抛出异常。

当元素不存在时,如何从数组编写赋值默认值

检查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:'");

相同的方法,但使用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:'");

通过args而不是args[0]

试试这样

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

LINQ已经有了DefaultIfEmpty方法:

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