检查 Console.ReadLine()!=null

5

我正在为我的应用程序制作一个CMD,当我检查“Console.ReadLine != null”时,我遇到了麻烦。

string input = Console.ReadLine();
 if(input != null)
     SomeFunction(input);

SomeFunction()中,我分割了这个字符串,例如:
Console.WriteLine(input[0]);

问题在于,当用户按一次 Enter 时,它能够正常工作。但是如果用户再次按下,就会出现异常。
那个 [0] 不存在。

1
你说的“again”是什么意思? - Selman Genç
如果您按下<RETURN>而没有任何输入,则字符串的长度为0,因此您无法获取空字符串的第一个字符。 - Random Dev
你再说什么意思?再说一遍,如果再次运行这个 IF 语句,并且输入完全相同(如果用户按下回车键),它将返回 true。 - Anton Miki
如果您按下<RETURN>而没有任何输入,则字符串的长度为0,因此您无法获取空字符串的第一个字符。但是,如果您运行此代码块一次,则可以正常工作,并且不会执行SomeFunction()函数。 - Anton Miki
你是如何执行块超过一次的不清楚。你是指重新启动应用程序,使用调试器移动当前行,还是在你的问题中没有显示循环或其他一些东西? - petelids
显示剩余3条评论
4个回答

19

按下 ENTER 键时,Console.ReadLine 返回空的 string。它不会返回 null。请使用 string.IsNullOrEmpty 进行检查。

if(!string.IsNullOrEmpty(input))

根据文档,只有在按下 CTRL + Z 时,它才会返回 null。


3

谢谢大家!

我发现可以通过检查字符串长度是否为0来解决问题。

if(input.Length==0) //(Actually, will check if input.Length !=0 before calling function based on original source)

相当简单。但是。
!string.IsNullOrEmpty(input)

工作得很好。每天都在学习新东西。感谢您的帮助!


1
if(!string.IsNullOrWhiteSpace(input))
    DoYourWork(input);

1

不仅要检查是否为null,还应该尝试使用String.IsNullOrEmpty检查其是否为空或null,因为当您未输入任何内容并按下Enter时,会得到一个空字符串,这会导致一个

类型为'System.IndexOutOfRangeException'的未处理异常

您更新后的完整代码应如下所示

string input = Console.ReadLine();
if (!string.IsNullOrEmpty(input) )
{
    SomeFunction(input);
}

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