编码此功能没有内存泄漏! - 请指教

时间:2010-07-20 07:06:47

标签: function c#-3.0 dispose filestream

在下面的代码示例中,文件流和流读取器是否会被丢弃或是否会造成内存泄漏?是否可以编写此函数而不会导致内存泄漏?

  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?
             }
         }
     }

由于

2 个答案:

答案 0 :(得分:5)

using指令意味着:

try
{
var iDisposable = new IDisposable();
//using iDisposable...
}
finally
{
//here IDisposable's dispose
}

所以是的,fstreamsreader都会被处理掉。

答案 1 :(得分:0)

using指令调用Dispose()方法,无论实例化方法是否在块内返回。

但请注意,您可以使用System.IO.File.ReadAllText方法以更少的代码实现相同的目标:

 string ReadFile(string strPath)
 {
     return System.IO.File.ReadAllText(strPath);
 }