array [1]不显示为null

时间:2013-06-21 04:15:45

标签: c# arrays string if-statement null

我无法将inputArray [1]的值作为if语句的空值。

以下是代码:

static void GetInput()
    {
       string input = Console.ReadLine();
       string[] inputArray = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

        switch (inputArray[0])
        {
            case "exit":
                System.Console.WriteLine(inputArray[0]);
                Console.WriteLine("Exiting...");
                break;
            case "help":
                System.Console.WriteLine(inputArray[0]);
                Help();
                GetInput();
                break;
            case "openall":
                if (inputArray[1] != null) ;
                {
                    System.Console.WriteLine(inputArray[0] + " " + inputArray[1]);
                    fileExt = inputArray[1];
                    OpenFiles();
                    GetInput();
                }
                break;                         
        }
    }

现在我尝试了除if以外的许多方法(inputArray [1]!= null);但似乎没有任何工作,所以我知道我现在缺少编程方面的知识。

我收到此错误: 索引超出了数组的范围。

感谢所有帮助!

4 个答案:

答案 0 :(得分:3)

使用if(inputArray.length > 1)代替if (inputArray[1] != null)

答案 1 :(得分:3)

在检查数组是否为空之前,需要测试数组的长度。

所以改变这个

if (inputArray[1] != null)

类似

if (inputArray.Length > 1 && inputArray[1] != null)

C# Array Length

正如评论中所提到的,测试

的代码越正确
if (inputArray.Length > 1)

因为inputArray[1] != null永远不会成真。

答案 2 :(得分:2)

我只想在你的代码中添加一个东西。

如果inputArray包含多于或等于两个元素,则此条件inputArray [1]!= null将始终出现。因为如果要拆分数组,它将不会返回'null'并且您已经指定了RemoveEmptyEntries,所以只需检查前面答案中提到的长度。无需检查其null或空。

答案 3 :(得分:1)

我正在检查你的代码,如果你的输入类似于“打开xxx”那么它会正常工作,你写的两个单词之间必须有一个空格,因为你使用

   input.Spli(new char{' '} ) 

然而,在尝试获取任何数组元素之前,最好检查数组长度。

 if (inputArray.Length > [Array element index that you want to obtain ] ) 
            { 
                //TO DO 
            } 
            else 
            { 
                // TO DO
            } 

请记住,您的输入字符串必须包含多个单独的单词,这些单词用空格分隔,否则如果您的输入字符串不包含许多单独的单词,那么您的inputarray将只有一个元素