Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What exactly is/means "System.IO.Stream+NullStream"?

I am currently experimenting to find the proper way of creating an HTTP context for unit testing purposes. While examining the stream types created, I was surprised that the following returns a type of System.IO.Stream+NullStream.

var context = new DefaultHttpContext();

var requestBodyType = context.Request.Body.GetType().FullName; 
var responseBodyType = context.Response.Body.GetType().FullName; 

If the test case requires it, I'd simply replace the stream with a MemoryStream and then act upon it accordingly.

var memoryStream = new MemoryStream();
var context = new DefaultHttpContext(); 
context.Response.Body = memoryStream;

So far so good. But what exactly is System.IO.Stream+NullStream? I would have expected to find a type of NullStream in the documentation, but couldn't find such a thing.

like image 447
Matthias Güntert Avatar asked Feb 25 '26 19:02

Matthias Güntert


2 Answers

It's an internal type.

It sub-classes Stream, and is exposed as Stream.Null.

As you can see from the implementation, it just throws away any data written to it, and doesn't return any data if asked.

like image 167
canton7 Avatar answered Feb 28 '26 08:02

canton7


The hierarchy for System.IO.Stream+NullStream looks like this

public abstract class Stream {

    private sealed class NullStream {
    
    }
    
}

The + means it's a nested child class of Stream

like image 24
Charles Avatar answered Feb 28 '26 08:02

Charles



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!