在下面的代码示例中,文件流和流读取器是否会被丢弃或是否会造成内存泄漏?是否可以编写此函数而不会导致内存泄漏?
string ReadFile(string strPath)
{
using (FileStream fstream = new FileStream(strPath, FileMode.Open))
{
using (StreamReader sreader = new StreamReader(fstream))
{
return sreader.ReadToEnd().ToString(); //NOTE ITS RETURNED HERE...SO CAN IT GET DISPOSED AFTER THIS LINE?
}
}
}
由于
答案 0 :(得分:5)
using
指令意味着:
try
{
var iDisposable = new IDisposable();
//using iDisposable...
}
finally
{
//here IDisposable's dispose
}
所以是的,fstream
和sreader
都会被处理掉。
答案 1 :(得分:0)
using
指令调用Dispose()方法,无论实例化方法是否在块内返回。
但请注意,您可以使用System.IO.File.ReadAllText
方法以更少的代码实现相同的目标:
string ReadFile(string strPath)
{
return System.IO.File.ReadAllText(strPath);
}