List<string> arguments = new List<string>(Environment.GetCommandLineArgs().Skip(1).Take(4));
int variant = consoleOptions.HandleInput(arguments);
public int HandleInput(List<string> input)
{
int variant = 0;
//for (int i = 0; i < input.Count; i++)
//{
// if (input[i].Contains("-s"))
// {
// variant = 1;
// }
//}
if (input[0].Contains("-s"))
{
variant = 1;
if (!String.IsNullOrWhiteSpace(input[1]) && !String.IsNullOrWhiteSpace(input[2]))
{
variant = 2;
}
if (!String.IsNullOrWhiteSpace(input[3]))
{
variant = 3;
}
}
return variant;
}
我正在从Commandline开始我的应用程序。 然后我得到一个字符串列表(最多4个)。
我现在想做的是:
如果List中的第一个字符串是“-s”,那么variant = 1
如果第二个和第三个字符串不为空,则变量= 2
如果第四个字符串不为空,则变量= 3
我尝试了一些东西(上面的代码),但问题是,如果我只得到第一个String(一个项目), 编译器在其他地方崩溃(检查第二个字符串,导致索引无法访问)..
什么是最好的方法?
答案 0 :(得分:1)
Take(4)
不保证你有4个元素,只是意味着你不会超过4个。所以你必须检查列表长度。
if (input.Count >= 1 && input[0].Contains("-s"))
{
return 1;
}
if (input.Count >= 3)
{
return 2;
}
if (input.Count >= 4)
{
return 3;
}
return 0; //what do you return if none of the conditions are met?
答案 1 :(得分:0)
你尝试这样的事。
if (input[0].Contains("-s"))
{
variant = 1;
}
if (!String.IsNullOrWhiteSpace(input[1]) && !String.IsNullOrWhiteSpace(input[2]))
{
variant = 2;
}
if (!String.IsNullOrWhiteSpace(input[3]))
{
variant = 3;
}
return variant;