这是我的代码:
string data = "...";
var stream = new StreamReader(data);
可以不调用Close()
方法吗?
答案 0 :(得分:5)
是的,否则你会有内存泄漏。将StreamReader
包裹在using statement中,这样您就不用担心要清理它了。
using (var reader = StreamReader(data))
{
...
}
答案 1 :(得分:1)
您是否真的编译并运行过代码?
StreamReader(string)
constructor将输入视为文件名!
除非这不是您的代码,并且意味着 StringReader
,否则您的代码会尝试流式传输data
中指定的文件名的内容,这很可能抛出FileNotFoundException
,因为该文件可能不存在。如果确实如此,您肯定需要调用Close
或将代码集成到using
语句中以释放文件句柄。
答案 2 :(得分:0)
您可能还想看一下msdn上的本教程:
http://msdn.microsoft.com/en-us/library/aa355056.aspx
告诉您有关using
语句需要注意的事项。除此之外,使用是要走的路。
codeProject上另一个漂亮的good article。值得阅读。
答案 3 :(得分:0)
在您的进程停止使用之前,其他进程将无法访问该资源,因此如果您不需要它,请关闭它