0

这是我的代码:

string data = "...";
var stream = new StreamReader(data);

不调用Close()方法可以吗?

4

4 回答 4

5

是的,否则你会有内存泄漏。用 using 语句包裹你StreamReader,这样你就不必担心清理它,例如

using (var reader = StreamReader(data))
{
    ...
}
于 2012-10-14T09:12:37.037 回答
1

你真的编译并运行你的代码了吗?

构造StreamReader(string)函数将输入视为文件名!

除非这不是您的代码并且您的意思是 StringReader,否则您的代码正在尝试流式传输 中指定的文件名的内容data,这可能会抛出 a FileNotFoundException,因为该文件可能不存在。如果是这样,您肯定需要调用Close或将您的代码集成到一个using语句中以释放文件句柄。

于 2012-10-14T10:07:48.173 回答
0

您可能还想查看有关 msdn 的本教程:http:
//msdn.microsoft.com/en-us/library/aa355056.aspx

它告诉您在using声明中需要注意的事项。除此之外,使用是要走的路。

关于 codeProject 的另一篇相当不错的文章。值得一读。

于 2012-10-14T09:19:40.490 回答
0

在您的进程停止使用该资源之前,其他进程将无法访问该资源,因此如果您不需要它,您应该关闭它

于 2012-10-14T10:04:07.843 回答