.net 正在为字符串输入转换Console.ReadLine()的空文本

vybvopom  于 2023-03-09  发布在  .NET
关注(0)|答案(2)|浏览(141)

我是新的c#,所以我需要一些指导。

string NumInput = Console.ReadLine();

在我的代码中,此语句给出以下警告
将空文字或可能的空值转换为不可空类型。
是否有替代此代码行的方法或其他方法可以使此警告消失

jgovgodb

jgovgodb1#

首先,您看到此消息是因为您在项目中启用了C#8Nullable reference type功能。Console.ReadLine()返回的值可以是stringnull,但您正在使用它设置类型为string的变量。相反,可以使用var关键字(这将隐式地将变量设置为与返回值相同的类型),也可以手动将变量设置为类型可空字符串string??表示可空引用类型。
然后,在使用变量之前,您可能需要检查变量是否确实包含字符串:

string? NumInput = Console.ReadLine();
if (NumInput == null)
{
    // ...
}
wnvonmuf

wnvonmuf2#

我刚开始学C sharp,实际上我昨天就开始学了,我也碰到了这堵墙,但我对C和C++了解得更多,我只是碰巧用了
string numImput = Console.ReadLine() + "\0";
警告也消失了。我的猜测是,\0用...嗯,一个空字符??填充了空值,因此如果用户没有键入任何内容,它肯定会什么也不填充。

现在我想问,请将此答案留给有经验的程序员,以确定这是否是一种有效且无害的方法。

相关问题