using语句中使用的类型应该隐式转换为IDisposable



我有以下逻辑:

try
{
using (var contents = new StreamReader(file.InputStream).ReadToEnd()) 
{
var rows = contents.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
rows.ForEach(r => mids.Add(r.Split(',')[0]));
}
}
catch(IOException e)
{}
finally
{
contents = null;
}

using语句中,我在问题中有一个错误。这可能是因为我使用了.ReadToEnd()方法。

如果没有using语句,我需要使用try/catch/finally进行清理(以修复veracode资源清理问题)

我怎么能解决这个问题,所以我不需要使用trycatchfinally,只使用using语句?

因此,using应该与实现IDisposable接口的对象一起使用。您调用返回stringcontentsReadToEnd方法不是IDisposable(因为字符串不是)。你应该这样使用它:

using (var streamReader = new StreamReader(file.InputStream)) 
{
var contents = streamReader.ReadToEnd();
// Some actions
}

您想要清理StreamReader,contents将在方法结束时被GC收集,因为它的类型是string

最新更新