I am trying to get my head around some of my predecessors code who, helpfully, has used 'var' to declare everything.
I have a using statement which is below:
using (var postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
When I put a breakpoint here, postStream shows up in the Autos window as System.Net.ConnectStream. Instead of 'var' I want to use 'ConnectStream' but the compiler doesn't like this.
What am I missing, why can't I write my code like this:
using (ConnectStream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
I know this is trivial but I was always taught not to use 'var' unless you have a specific reason to do so (such as when dealing with LINQ). Am I wrong?
ConnectStream
is an internal class, you can't use it explicitly. But it doesn't matter, because you don't need to know that its actual type is ConnectStream
: all you need to know is that it's a Stream
(the return type declared by GetRequestStream
), the actual implementation doesn't really matter.
If you want to specify the type explicitly, just write it like this:
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
(but it has exactly the same meaning as using var
)