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

为何Windows VS运行正常,macOS VS Code执行C#代码报CS8604错误?

问题原因与解决方案

1. CS8604错误的根源

CS8604是C#可空引用类型检查触发的编译错误。当项目启用可空引用类型(.NET 6+新项目默认开启)时,编译器会识别Console.ReadLine()的返回值为string?(可能为null的字符串),而int.Parse要求传入非空string参数,因此抛出该错误。

Windows Visual Studio中可能默认关闭了可空引用类型检查,或你的项目未启用该特性,所以没有触发错误。

2. 为什么加!后仍无法运行

!是空值抑制运算符,仅用于告诉编译器“我保证这个值不为null”,但无法解决运行时实际输入为null的问题。在macOS的VS Code环境中,部分运行配置(比如早期版本的调试控制台)可能存在输入传递异常,导致Console.ReadLine()直接返回null,此时调用int.Parse会触发ArgumentNullException,程序崩溃。

3. 正确的解决方法

推荐使用更安全的int.TryParse方法,既能消除编译错误,又能处理输入为null或非整数的异常情况:

using System;

namespace Consoleaaa
{
    class Program
    {
        static void Main(string[] args)
        {
            // 处理第一个输入
            if (!int.TryParse(Console.ReadLine(), out int first))
            {
                Console.WriteLine("请输入有效的整数");
                return;
            }
            // 处理第二个输入
            if (!int.TryParse(Console.ReadLine(), out int second))
            {
                Console.WriteLine("请输入有效的整数");
                return;
            }
            
            if (first < second)
            {
                for(int i = first; i <= second; i++)
                {
                    Console.WriteLine(i);
                }
            }
            else
            {
                for(int i = first; i >= second; i--)
                {
                    Console.WriteLine(i);
                }
            }
        }
    }
}

可选方案:关闭可空引用类型检查

若想保持原有代码逻辑,可修改项目文件(.csproj),将可空检查关闭,与Windows Visual Studio默认行为对齐:

<PropertyGroup>
  <!-- 把enable改为disable -->
  <Nullable>disable</Nullable>
</PropertyGroup>

但不推荐这种方式,因为可空引用类型检查能有效避免潜在的空引用异常。

额外提示

确保在VS Code中使用集成终端运行程序,而非旧版调试控制台,这样能保证输入正常传递,避免Console.ReadLine()返回null的情况。

内容的提问来源于stack exchange,提问作者Билич Пётр

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:31