Парадоксально, но вот так эту задачу решает Microsoft (декомпилировано Lutz Roeder's .NET Reflector):
| Код | public static void Clear() { Win32Native.COORD coord1 = new Win32Native.COORD(); IntPtr ptr1 = Console.ConsoleOutputHandle; if (ptr1 == Win32Native.INVALID_HANDLE_VALUE) { throw new IOException(Environment.GetResourceString("IO.IO_NoConsole")); } Win32Native.CONSOLE_SCREEN_BUFFER_INFO console_screen_buffer_info1 = Console.GetBufferInfo(); int num1 = console_screen_buffer_info1.dwSize.X * console_screen_buffer_info1.dwSize.Y; int num2 = 0; if (!Win32Native.FillConsoleOutputCharacter(ptr1, ' ', num1, coord1, out num2)) { __Error.WinIOError(); } num2 = 0; if (!Win32Native.FillConsoleOutputAttribute(ptr1, console_screen_buffer_info1.wAttributes, num1, coord1, out num2)) { __Error.WinIOError(); } if (!Win32Native.SetConsoleCursorPosition(ptr1, coord1)) { __Error.WinIOError(); } }
|
Т.е. просто получаем буфер консоли, забиваем его пробелами, сбрасываем атрибуты символов и устанавливаем курсор на (1, 1). Естественно реализовано все через WinAPI. А теперь через 7 дней за вами придет Билли.  |