1

当我在我的 C#.NET 项目上运行 Gendarme 2.11 时,以下代码会触发 EnsureLocalDisposalRule:

XmlDocument myXmlDoc = this.GetXmlDoc();
foreach (XmlNode myNode in myXmlDoc.GetElementsByTagName("TAGNAME"))
{
    ... does something with myNode ...
}

留言:

'XmlNodeList' 类型的本地未处理(至少不是本地处理)。

阅读规则描述后, 我尝试将其重写如下:

XmlDocument myXmlDoc = this.GetXmlDoc();
using (XmlNodeList myNodeList = myXmlDoc.GetElementsByTagName("TAGNAME"))
{
    foreach (XmlNode myNode in myNodeList )
    {
        ... does something with myNode ...
    }
}

但这给出了错误:

'System.Xml.XmlNodeList':在 using 语句中使用的类型必须隐式转换为 'System.IDisposable'

这是什么原因造成的?这是宪兵队的错误吗?还是我误解了规则?如何改进我的代码?

4

0 回答 0