【发布时间】:2012-08-13 11:30:04
【问题描述】:
我正在开发自己的命令行参数解析器,在阅读了数十篇有关方法重载的文章后,我仍然不确定我是否做得对。
以这种方式重载方法对我有什么好处吗?我知道我可以通过分支在一个方法(使用默认值参数)中编写整个内容,但我目前正在尝试重载,我想知道是否继续沿着这条路走。
public static class MyParsers
{
private static List<string> args;
static MyParsers()
{
args = Environment.GetCommandLineArgs().ToList();
}
public static List<string> ParseOptions()
{
return ParseOptions(false);
}
public static List<string> ParseOptions(bool toLowercase)
{
// DEBUG: Change command line arguments here.
var arguments = args;
return !toLowercase
? arguments
: arguments.MyExtToLower();
}
public static bool OptionExists(string option)
{
return OptionExists(option, false);
}
public static bool OptionExists(string option, bool toLowercase)
{
var list = ParseOptions(toLowercase);
for (var i = 1; i < list.Count; i++)
{
if (list[i].StartsWith(option)) return true;
}
return false;
}
}
【问题讨论】:
-
“我知道我可以在一个方法中编写整个内容(使用默认值参数” - 在这种情况下我会这样做
-
正如我现在所看到的,它确实是一般如何使用重载(未提供参数的默认值)。
-
除了优化 OptionExists 以使用 linq
return ParseOptions(toLowercase).Any(x=> x.StartsWith(option))甚至return ParseOptions(toLowercase).Any(x=> x!=null && x.StartsWith(option))
标签: c# overloading