2011-02-07 17 views
5

Kiedy pisałem kilka procedur wejścia/wyjścia w C++, zwykle robiłem to jako ogólne, operując na interfejsach od <iostream>.C# - pytanie o strumień

Na przykład:

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

Jak należy to samo zrobić w C#?

Podejrzewam mógłbym napisać moje procedury oparte na System.IO.TextReader lub System.IO.TextWriter, ale nie jestem pewien.


Oczywiście ja poszukuje tej samej klasy bazowej w C#, który jest najbardziej ogólny charakter std::istream lub std::ostream i który może być rozszerzony na wiele sposobów (na przykład, jak boost::iostreams rozciąga strumienie std::).

+1

Klasa abstrakcyjna jest mniej więcej tak podstawowa, jak to tylko możliwe ... (zależy to również od tego, czego szukasz, jest także [System.IO.Stream] (http://msdn.microsoft. com/en-us/library/system.io.stream.aspx)) –

Odpowiedz

5

Jeśli chcesz pracować z ciągami, powinieneś wziąć TextReader lub TextWriter.

Jeśli chcesz pracować z bajtami, powinieneś wziąć Stream.

Klasy te są dziedziczone przez konkretne implementacje, takie jak FileStream, StringWriter i NetworkStream.

+2

To nie do końca prawda. TextReader i TextWriter działają na strumieniach, ale nie znajdują się w łańcuchu dziedziczenia strumienia Stream lub FileStream. Są one podstawą odpowiednio dla StringReader i StringWriter. Dla tego, co OP ma robić, System.IO.Stream jest odpowiednią klasą (odpowiednik połączonego strumienia wejściowego i wyjściowego). –

+1

@ Chris: Nigdy tego nie powiedziałem. Powiedziałem te klasy. – SLaks

+0

Źle zinterpretowałem twoją odpowiedź, przepraszam. Zająłem "Te klasy", aby rozumieć wszystkie wyżej wymienione klasy, zakładam, że OP mógł popełnić ten sam błąd. –

3

Użyj System.IO.Stream, jeśli zależy Ci tylko na bajtach. TextReader/TextWriter są dla, gdy znasz bazowe dane do tekstu.

1

Podstawową klasą jestStream. MemoryStream, FileStream itp. Dziedziczą z tej klasy.

0

Możesz mieć funkcję C# pobierającą strumień (System.IO.Stream), tak jak w C++. Jeśli jest to odpowiednie, zależy od funkcji, którą piszesz.