2011-02-07 2 views
5

Когда я писал какую-то процедуру ввода-вывода в C++, я обычно делал ее как можно более универсальной, работая на интерфейсах от <iostream>.C# - вопрос с потоком

Например:

void someRoutine(std::istream& stream) { ... } 

Как должен же быть сделано в C#?

Я подозреваю, что я мог бы написать мои процедуры на основе System.IO.TextReader или System.IO.TextWriter, но я не уверен.


Очевидно, что я ищу базовый класс в C#, который, как родовой, как std::istream или std::ostream и который может быть продлен во многих отношениях (например, boost::iostreams расширяет std:: потоков).

+1

Абстрактный класс примерно такой же простой, как вы собираетесь получить ... (хотя и зависит от того, что вы ищете, также есть [System.IO.Stream] (http://msdn.microsoft. com/en-us/library/system.io.stream.aspx)) –

ответ

5

Если вы хотите работать со строками, вы должны взять TextReader или TextWriter.

Если вы хотите работать с байтами, вы должны взять Stream.

Эти классы наследуются конкретными реализациями, такими как FileStream, StringWriter и NetworkStream.

+2

Это не совсем так. TextReader и TextWriter работают с потоками, но они не входят в цепочку наследования Stream или FileStream. Они являются основой для StringReader и StringWriter, соответственно. Для того, что OP хочет сделать, System.IO.Stream является подходящим классом (эквивалентным объединенному потоку ввода и вывода). –

+1

@ Крис: Я никогда этого не говорил. Я сказал эти классы. – SLaks

+0

Я неверно истолковал ваш ответ, извинился. Я взял «Эти классы», чтобы обозначить все классы, упомянутые выше, я полагаю, что ОП мог совершить ту же ошибку. –

3

Используйте System.IO.Stream, если вас беспокоит только байты. TextReader/TextWriter предназначены для тех случаев, когда вы знаете базовые данные для текста.

1

Базовый класс являетсяStream. MemoryStream, FileStream и т. Д. Наследуются от этого класса.

0

У вас может быть функция C# с потоком (System.IO.Stream), как на C++. Если это уместно, зависит от функции, которую вы пишете.

Смежные вопросы