You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决VS Code中“将null转换为非nullable类型”的错误?

解决Console.ReadLine()的空值转换错误

你遇到的错误是因为C# 8.0及以上版本引入了可空引用类型检查:Console.ReadLine()的返回值是string?(可空字符串类型)——当输入流结束时它会返回null,但你把它赋值给了非可空的string变量,编译器会提示这个空值转换风险。

下面是几种可行的解决方法:

方法1:使用可空字符串声明变量

直接把变量类型改为string?,允许变量接收null值:

class Program
{
    static void Main() 
    {
        Console.WriteLine("Calc v0.1");
        Console.WriteLine("Enter:");

        string? num1 = Console.ReadLine();
        string? num2 = Console.ReadLine();

        Console.WriteLine(num1 + num2);
    }
}

方法2:给变量设置默认值(避免null)

用空合并运算符??,如果Console.ReadLine()返回null,就用默认值(比如空字符串)替代:

class Program
{
    static void Main() 
    {
        Console.WriteLine("Calc v0.1");
        Console.WriteLine("Enter:");

        string num1 = Console.ReadLine() ?? "";
        string num2 = Console.ReadLine() ?? "";

        Console.WriteLine(num1 + num2);
    }
}

方法3:强制非空断言(谨慎使用)

如果你能确保输入永远不会返回null,可以用!标记强制编译器忽略空值检查,但如果实际出现null,运行时会抛出NullReferenceException:

class Program
{
    static void Main() 
    {
        Console.WriteLine("Calc v0.1");
        Console.WriteLine("Enter:");

        string num1 = Console.ReadLine()!;
        string num2 = Console.ReadLine()!;

        Console.WriteLine(num1 + num2);
    }
}

方法4:关闭可空引用类型检查(不推荐)

如果你不需要这个空安全特性,可以修改项目的.csproj文件,把<Nullable>enable</Nullable>改为<Nullable>disable</Nullable>,这样编译器就不会再提示这类错误,但会失去空值风险的编译检查。

内容的提问来源于stack exchange,提问作者marc77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:46:00