字符串列表,项目请求数组问题

时间:2012-02-07 11:59:58

标签: c# string list if-statement

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(一个项目), 编译器在其他地方崩溃(检查第二个字符串,导致索引无法访问)..

什么是最好的方法?

2 个答案:

答案 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;