不寻常的Console.Write行为

时间:2014-06-03 10:46:47

标签: c# console

Console.Write不应该按原样行事;我正在尝试创建一个处理绘图到控制台特定区域的类,并且发生了一些非常奇怪的事情。我不知道如何调试它。

当我把这段代码扔进:

string output;

for (int i = 0; i < Console.WindowHeight; ++i) {
    Console.SetCursorPosition(0, i);
    output = "";
    for (int j = 0; j < Console.WindowWidth; ++j) output += (i % 10).ToString();
    Console.Write(output);
}

我得到以下信息:http://snag.gy/LrFcU.jpg(由于声誉限制,我不允许发布图片 - .-)

然而,当我像这样修改它时:

string output;

for (int i = 0; i < Console.WindowHeight; ++i) {
    Console.SetCursorPosition(0, i);
    output = "";

    // take one character away from the string
    for (int j = 0; j < Console.WindowWidth - 1; ++j) output += (i % 10).ToString();

    Console.Write(output);
}

我明白了! http://snag.gy/jxLH8.jpg

WindowWidth为80,WindowHeight为25,缓冲区宽度和高度均等于窗口宽度和窗口高度。

我在外部for循环的每次交互中重置光标位置...为什么要省略第一行?

1 个答案:

答案 0 :(得分:0)

第一行没有被省略,只是它滚动到视线之外。

您在第一个版本中再添加一个字符,从而到达该行的末尾并将插入符号放在下一行。