当我在我的 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'
这是什么原因造成的?这是宪兵队的错误吗?还是我误解了规则?如何改进我的代码?