C#中Console.ReadLine()的问题

3
    static void Main()
    {
        string str;
        str = Console.ReadLine();
        while (str != null)//HERE!
        {
            str = str.Remove(0, 1);
            str = str.Remove(str.Length - 1, 1);
            string[] value = str.Split(',');
            int[] intval = new int[value.Length];
            for (int i = 0; i < value.Length; ++i)
            {
                bool re = int.TryParse(value[i], out intval[i]);
                Console.WriteLine(intval[i]);
            }
            str = Console.ReadLine(); 
        }
    }

您好,在上面的程序中,我想使用"str!=null"来判断控制台是否有未读取的内容。

然而,ReadLine()返回给我一个""而不是null,导致程序进入while循环并生成错误结果。

我该如何修复它?

4个回答

8
while(!string.IsNullOrEmpty(str))

使用内置方法检查它

如果返回为空,他们只是按了回车键,无论如何你都有了哨兵,所以你可以在此失败。


2

从文档中可以看到:

如果在方法从控制台读取输入时按下CTRL+Z字符,则该方法返回空引用(Visual Basic中的Nothing)。这使用户可以在调用循环中的ReadLine方法时防止进一步的键盘输入。

因此,调用ReadLine()确实可能会返回null引用。但是,String.IsNullOrEmpty方法将为您检查这两种情况。


0
 while (!string.IsNullOrEmpty(str))
{
...
}

0

ReadLine会一直阻塞,直到用户按下回车键。因此,如果您只是按下回车键,将得到一个空字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接