Home > Enterprise >  What exactly is/means "System.IO.Stream NullStream"?
What exactly is/means "System.IO.Stream NullStream"?

Time:01-24

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.

CodePudding user response:

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.

CodePudding user response:

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

  •  Tags:  
  • Related