2012-09-12 52 views
1

我想模擬手動Console.Writeline。 即:我正在創建一個帶有函數WriteLine的小型控制檯類。 見我下面的代碼:C#:手動創建一個console.writeline

static class Console 
{ 
    public static string WriteLine(string text) 
    { 
     return text; 
    } 
} 

所以我想,有:

class Program 
{ 
    static void Main() 
    { 
     Console.WriteLine("HiMan"); 
    } 
} 
static class Console 
{ 
    public static string WriteLine(string text) 
    { 
     return text; 
    } 
} 

我知道它返回的文字,但我怎麼能顯示在屏幕上,而無需使用寫或的WriteLine方法?

我正在創建這個例子,讓人們瞭解類是如何工作的,以及爲什麼當我使用WriteLine或Write()時,它會在控制檯窗口中顯示文本。

+0

如果你想知道'Console'類是如何工作的,我建議你閱讀[documentation](http://msdn.microsoft.com/en-us/library/system.console(v = vs.90)的.aspx)。 – James

+0

您絕對可以使用一些低級別的pinvoke,brb與答案... –

+0

正確的答案是「類如何工作?」應該是語言和功能無關的。一個類是一個類,無論是在C#,Java等等。這同樣適用於繼承,封裝的概念...... – Alex

回答

2

這取決於你想去多深。 Console.WriteLine()在內部調用WriteLine Console.Out。 Console.Out是提供WriteLine實現的TextWriter。您可以通過直接將字節寫入流來實現自己的WriteLine。

如果您想深入瞭解,例如直接寫入控制檯緩衝區,請注意Console的Out,In和Error屬性都是可重定向的,忽略它們可能會導致問題,例如無法重定向輸入和輸出使用命令行上的管道。

0

我猜你想在相當低的水平上做到這一點。我用ReadConsoleOutputWriteConsoleOutput直接讀取和寫入控制檯的顯示方式,Console.WriteLine不會讓我(這些是偉大的復古二維遊戲機,我的原意)。

PInvoke鏈接:ReadConsoleOutput | WriteConsoleOutput

您可能不需要ReadConsoleOutput,但對於那些Google這個頁面,這些方法有些相互結合。

如果你想從鍵盤讀取,我相信你可以使用ReadConsoleInput但我沒有真的嘗試過。該建議的小粒鹽。