.net 如何修复新DataTable实例上的CA2000代码分析错误

.net 如何修复新DataTable实例上的CA2000代码分析错误,.net,.net,如何修复语句DataTable dtSummary=new DataTable(“Summary”);上以下函数中的CA2000代码分析错误;?如果我在dtSummary上使用using block,而我不能在下面的函数中使用using block,因为其他函数将使用GetSummaryReportTable函数返回的datatable,那么CA2000将关闭 私有数据表GetSummaryReportTable(IImportResult){ }这是一个已经在这里详细讨论过的主题: 简而言之,

如何修复语句DataTable dtSummary=new DataTable(“Summary”);上以下函数中的CA2000代码分析错误;?如果我在dtSummary上使用using block,而我不能在下面的函数中使用using block,因为其他函数将使用GetSummaryReportTable函数返回的datatable,那么CA2000将关闭

私有数据表GetSummaryReportTable(IImportResult){


}

这是一个已经在这里详细讨论过的主题:

简而言之,如果您真的想遵循样式cop规则,那么就不能使用DataTable作为返回类型。您必须使用其他对象返回数据,并将DataTable对象包装在using语句中。

请检查以下内容:

用这个例子

Private Function GetNewStream() As StreamWriter

    m_CurrentFileName = GetNewFileName()

    // Triggers CA2000
    Return New StreamWriter(New FileStream(m_CurrentFileName, _
        FileMode.Append, _
        FileAccess.Write, _
        FileShare.Read))

End Function
微软表示:

“规则被触发的原因是,如果StreamWriter 构造函数抛出异常,然后新创建的文件流 对象未被处置。您可以通过将其包装到 try/finally在finally中阻止并处置FileStream对象 仅当StreamWriter块未成功创建时才会被阻止。


这似乎是解决警告的最佳方法。

请格式化您的代码,选择它并使用101010按钮。这样是不可读的…可能是
Private Function GetNewStream() As StreamWriter

    m_CurrentFileName = GetNewFileName()

    // Triggers CA2000
    Return New StreamWriter(New FileStream(m_CurrentFileName, _
        FileMode.Append, _
        FileAccess.Write, _
        FileShare.Read))

End Function