开发者

C# - stream question

开发者 https://www.devze.com 2023-02-08 21:11 出处:网络
When I was writing some I/O routine in C++, I would usually make it as generic as possible, by operating on the interfaces from <iostream>.

When I was writing some I/O routine in C++, I would usually make it as generic as possible, by operating on the interfaces from <iostream>.

For example:

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

How should the same be done in C#?

I suspect I could write my routines based on the System.IO.TextReader or System.IO.TextWriter, but I'm not sure.


Obviously I'm seeking for a same base class in C#, which is as generic as std::istream or std::ostream and which can be extended in many ways (for example, as boost::io开发者_开发百科streams extends the std:: streams).


If you want to work with strings, you should take a TextReader or TextWriter.

If you want to work with bytes, you should take a Stream.

These classes are inherited by concrete implementations such as FileStream, StringWriter, and NetworkStream.


Use System.IO.Stream if you only care about bytes. TextReader / TextWriter are for when you know the underlying data to be text.


The base class is Stream. MemoryStream, FileStream, etc. inherit from this class.


You can have the C# function taking a Stream ( System.IO.Stream ) as in C++. If this is appropriate depends on the function you write.

0

精彩评论

暂无评论...
验证码 换一张
取 消