Я относительно новичок в C# и задаю вопрос о выходных потоках.Обработка потока: функция печати C#
В моей текущей программе у меня есть класс под названием «партии», который содержит некоторые данные (пакетный идентификатор, startTime, endTime, продолжительность и т. Д.). У меня есть список партий, и я хотел бы иметь возможность печатать каждую партию как на консоли, так и в файле.
Я попытался добиться этого, написав метод 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}");
...
...
}
Однако, когда я пытаюсь передать консоль моей функции печати, я получаю сообщение об ошибке. Я недостаточно осведомлен о потоках или о том, как работает консоль, или о дереве наследования, позволяющем обеим и Консолям иметь возможность использовать функцию WriteLine, но не мою функцию печати. Возможно, мне просто нужен другой тип в качестве параметра в моей функции, но я не знаю, что это за тип.
Мне удобнее программировать на C++, и я знаю, что если бы я работал с этим языком, было бы очень полезно перегрузить оператор ostream; в основном, я хочу, чтобы функция печати, которая будет вести себя как оператор ostream, будет.
Если кому-то нужно, чтобы я ответил на любые уточняющие вопросы, сообщите мне об этом, и я сразу смогу это сделать. Заранее спасибо!
Что вы хотите сказать? – cvraman
Вы можете это сделать, но я не уверен, что это метод, который большинство людей будет использовать по умолчанию ... Мне было бы проще просто написать две отдельные функции или даже одну функцию, которая имеет какой-то переключатель в зависимости от того, где вы хотите, чтобы он написал. – pay
Мой вопрос заключается в том, как изменить мою функцию печати, чтобы иметь возможность печатать на консоли и в файле. Мне показалось интуитивным для новичков, что, поскольку Console.WriteLine() и fout.WriteLine() работают, я мог бы сделать это таким образом, но я мог ошибаться – CynicalPassion63