我试图让我的一些前任代码有所帮助,这些代码有用地使用了'var'来声明所有内容。

我有一个using语句,如下所示:

using (var postStream = request.GetRequestStream())
{
    postStream.Write(byteData, 0, byteData.Length);
}


当我在此处放置断点时,postStream在Autos窗口中显示为System.Net.ConnectStream。我想使用“ ConnectStream”代替“ var”,但是编译器不喜欢这样。

我缺少什么,为什么不能这样编写代码:

using (ConnectStream postStream = request.GetRequestStream())
{
    postStream.Write(byteData, 0, byteData.Length);
}


我知道这很简单,但是总是教我不要使用“ var”,除非您有特定的理由(例如在处理LINQ时)。我错了吗?

最佳答案

ConnectStream是一个内部类,您不能显式使用它。但这没关系,因为您不需要知道其实际类型是ConnectStream:您只需知道它是Stream(由GetRequestStream声明的返回类型),即实际实现并不重要。

如果要显式指定类型,则可以这样编写:

using (Stream postStream = request.GetRequestStream())
{
    postStream.Write(byteData, 0, byteData.Length);
}


(但其含义与使用var完全相同)

10-04 14:20