我有以下逻辑:
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
.ReadToEnd()
没有 使用 我需要使用的语句 try/catch/finally 进行清理 veracode 资源清理问题)
使用
try/catch/finally
veracode
我该怎么解决,这样我就不需要使用 try\catch\finally 并且仅使用 使用 陈述
try\catch\finally
所以 using 应与实现的对象一起使用 IDisposable 界面你在打电话 ReadToEnd 返回的方法 string 和 contents 不是 IDisposable (因为字符串不是)。 您应该这样使用它:
IDisposable
ReadToEnd
string
contents
using (var streamReader = new StreamReader(file.InputStream)) { var contents = streamReader.ReadToEnd(); // Some actions }
你想清理 StreamReader , 目录 将在方法完成时由GC收集,因为它具有类型 一串 .
StreamReader
目录
一串