我是新的c#,所以我需要一些指导。
string NumInput = Console.ReadLine();
在我的代码中,此语句给出以下警告将空文字或可能的空值转换为不可空类型。是否有替代此代码行的方法或其他方法可以使此警告消失
jgovgodb1#
首先,您看到此消息是因为您在项目中启用了C#8Nullable reference type功能。Console.ReadLine()返回的值可以是string或null,但您正在使用它设置类型为string的变量。相反,可以使用var关键字(这将隐式地将变量设置为与返回值相同的类型),也可以手动将变量设置为类型可空字符串string?。?表示可空引用类型。然后,在使用变量之前,您可能需要检查变量是否确实包含字符串:
Console.ReadLine()
var
string?
?
string? NumInput = Console.ReadLine(); if (NumInput == null) { // ... }
wnvonmuf2#
我刚开始学C sharp,实际上我昨天就开始学了,我也碰到了这堵墙,但我对C和C++了解得更多,我只是碰巧用了string numImput = Console.ReadLine() + "\0";警告也消失了。我的猜测是,\0用...嗯,一个空字符??填充了空值,因此如果用户没有键入任何内容,它肯定会什么也不填充。
string numImput = Console.ReadLine() + "\0";
现在我想问,请将此答案留给有经验的程序员,以确定这是否是一种有效且无害的方法。
2条答案
按热度按时间jgovgodb1#
首先,您看到此消息是因为您在项目中启用了C#8Nullable reference type功能。
Console.ReadLine()
返回的值可以是string或null,但您正在使用它设置类型为string的变量。相反,可以使用var
关键字(这将隐式地将变量设置为与返回值相同的类型),也可以手动将变量设置为类型可空字符串string?
。?
表示可空引用类型。然后,在使用变量之前,您可能需要检查变量是否确实包含字符串:
wnvonmuf2#
我刚开始学C sharp,实际上我昨天就开始学了,我也碰到了这堵墙,但我对C和C++了解得更多,我只是碰巧用了
string numImput = Console.ReadLine() + "\0";
警告也消失了。我的猜测是,\0用...嗯,一个空字符??填充了空值,因此如果用户没有键入任何内容,它肯定会什么也不填充。
现在我想问,请将此答案留给有经验的程序员,以确定这是否是一种有效且无害的方法。