我對C#比較陌生,並且對輸出流有個疑問。流處理:打印函數c#
在我目前的程序中,我有一個名爲「批次」的類,其中包含一些數據(批次ID,開始時間,結束時間,持續時間等)。我有一個批次列表,並希望能夠將每個批次打印到控制檯和文件。
我試圖通過在我的批處理類中寫入一個Print()方法來實現這一點,該方法可以整齊地打印所有內容。我想將這個函數作爲參數傳遞給控制檯或者輸出文件(我們稱之爲fout),以便函數可以寫入任何一個。由於這兩個控制檯和FOUT這樣使用的WriteLine()方法:
Console.WriteLine("Some text");
fout.WriteLine("Some text");
這似乎是我應該給我的打印功能類型的StreamWriter的參數,這樣我可以傳遞給它的控制檯或FOUT,並實現與上面相同的目標是這樣的:
Print(Console);
Print(fout);
void Print(StreamWriter stream) {
stream.WriteLine($"Batch ID: {Id}");
...
...
}
但是,當我嘗試將控制檯傳遞給我的打印功能時,出現錯誤。我對流的熟悉程度不夠,或者控制檯如何工作,或者繼承樹會使fout和Console都能夠使用WriteLine函數,但不能使用我的打印函數。也許我只是需要一個不同的類型作爲我函數中的一個參數,但我不知道這個類型是什麼。我很自在地使用C++編程,而且我知道如果我使用這種語言,那麼重載ostream操作符是最有意義的;基本上,我想要一個可以像ostream運算符那樣工作的打印函數。
如果有人需要我回答任何澄清問題,請讓我知道,我可以立即做到這一點。提前致謝!
你的問題是? – cvraman
你可以做到這一點,但我不知道這是大多數人會默認使用的方法......我會發現它更簡單,只需編寫兩個單獨的函數,或者甚至一個具有某種開關的函數,這取決於哪裏你想要它寫。 – pay
我的問題是如何修改我的打印功能以便能夠打印到控制檯和文件。對我來說,作爲一個新手,我覺得這很直觀,因爲Console.WriteLine()和fout.WriteLine()都可以這樣做,我可以這樣做,但我可能是錯誤的 – CynicalPassion63