我试图了解一些前任代码,他们帮助我们使用'var'来声明一切.
我有一个使用声明如下:
using (var postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
Run Code Online (Sandbox Code Playgroud)
当我在这里放置断点时,postStream在Autos窗口中显示为System.Net.ConnectStream.而不是'var'我想使用'ConnectStream',但编译器不喜欢这样.
我错过了什么,为什么我不能这样写我的代码:
using (ConnectStream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
Run Code Online (Sandbox Code Playgroud)
我知道这是微不足道的,但我总是被告知不要使用"变种",除非你有特别的理由这样做(如使用LINQ打交道时).我错了吗?
Tho*_*que 10
ConnectStream是一个内部类,您不能显式使用它.但这并不重要,因为你不需要知道它的实际类型是ConnectStream:你需要知道的是它是一个Stream(声明的返回类型GetRequestStream),实际的实现并不重要.
如果要明确指定类型,只需像这样写:
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
Run Code Online (Sandbox Code Playgroud)
(但它与使用的含义完全相同var)