如何在for循环中声明变量
foreach (System.Xml.XmlNode xmlnode in node)
{
string AMSListName = xmlnode.Attributes["Title"].Value.ToString();
/* the below assignment should be variable for each iteration */
XmlNode ndViewFields + AMSListName = xmlDoc.CreateNode(XmlNodeType.Element,
"ViewFields", "");
}
我如何实现这一目标?我希望for循环中的每个值都让xmlnode具有不同的名称。这有可能吗?
答案 0 :(得分:5)
使用集合:
List<XmlNode> nodes = new List<XmlNode>();
foreach (System.Xml.XmlNode xmlnode in node)
{
string AMSListName = xmlnode.Attributes["Title"].Value.ToString();
nodes.Add(xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", ""));
}
您可以通过索引或循环访问此列表:
foreach(var node in nodes)
{
// ...
}
另一种方法如果名称是标识符,请使用Dictionary
:
Dictionary<string, System.Xml.XmlNode> nodeNames = new Dictionary<string, System.Xml.XmlNode>();
foreach (System.Xml.XmlNode xmlnode in node)
{
string AMSListName = xmlnode.Attributes["Title"].Value.ToString();
nodeNames[AMSListName] = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
}
这将替换已有的具有给定名称的节点,否则它将添加它。
您可以通过名称访问它:
XmlNode node
if(nodeNames.TryGetValue("Some Name", out node)
{
// ..
};
答案 1 :(得分:0)
我建议使用像字典或hastable这样的东西。因为即使您确实创建了动态变量,您将在以后如何引用它们?我不确定这是可能的。
Hashtable ViewFields = new Hashtable();
foreach (System.Xml.XmlNode xmlnode in node)
{
string AMSListName = xmlnode.Attributes["Title"].Value.ToString();
XmlNode nd = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
ViewFields.Add(AMSListName,nd);
}