这种情况一直困扰着我。举个例子,假设一个控制台应用程序希望将filepath作为命令行参数。
string first = args[0];
但如果没有参数,则会发生错误。我想我可以做类似以下的事情:
string first = (args[0]!=null) ? args[0] : "c:\";
我正在寻找的东西更优雅:
string first = (MyTryParse(args[0],"c:\");
我可以将其作为扩展名编写,但是由于args [0]在调用方法之前会抛出异常,因此无法工作。
答案 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();