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

Linux下C#控制台代码第二数组无输出问题求助

问题:C#代码在Linux下无法显示第二个数组输出

代码示例

int[] Array = { 0, 1, 2, 3, 4, 5 };
int i;

for (i = 0; i < 6; i++)
    Console.Write(" " + Array[i]);

Console.WriteLine("\n New Array");
Array = new int[] { 99, 10, 100, 18, 78, 23, 163, 9, 87, 49 };

for (i = 0; i < 10; i++)
{
    Console.Write(" " + Array[i]);
}

Console.ReadLine();

运行环境(VS Code)

  • Version: 1.82.0
  • Electron: 25.8.0
  • ElectronBuildId: 23503258
  • Chromium: 114.0.5735.289
  • Node.js: 18.15.0
  • V8: 11.4.183.29-electron.0
  • OS: Linux x64 5.15.0-83-generic

输出差异

Windows系统正常输出

0 1 2 3 4 5 
New Array 
99 10 100 18 78 23 163 9 87 49

Linux系统异常输出

0 1 2 3 4 5
New Array

原因分析

核心问题是控制台输出缓冲机制差异:

  • Windows下,控制台会在执行Console.WriteLine(换行操作)或程序结束时自动刷新输出缓冲区;
  • Linux下,Console.Write的内容会暂存在缓冲区中,仅当缓冲区满、遇到换行符或手动触发刷新时才会显示到控制台。代码中第二个循环用Console.Write输出后直接调用Console.ReadLine,此时缓冲区内容未被触发刷新,导致第二个数组的输出无法显示。

解决办法

以下几种方案任选其一:

  1. 强制刷新缓冲区:在第二个循环结束后添加Console.Flush();,强制将缓冲区内容输出到控制台:
    for (i = 0; i < 10; i++)
    {
        Console.Write(" " + Array[i]);
    }
    Console.Flush(); // 添加此行强制刷新
    Console.ReadLine();
    
  2. 用换行触发刷新:在第二个循环结束后调用Console.WriteLine();,通过换行操作触发缓冲刷新:
    for (i = 0; i < 10; i++)
    {
        Console.Write(" " + Array[i]);
    }
    Console.WriteLine(); // 添加此行触发刷新
    Console.ReadLine();
    
  3. 调整输出方式:如果允许元素单独换行,可以把循环内的Console.Write替换为Console.WriteLine,但会改变原输出格式。

内容的提问来源于stack exchange,提问作者CHEL IS OTOVSUDY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:12:51