为什么字符串会失去它的值?

本文关键字:失去 字符串 为什么 | 更新日期: 2023-09-27 18:04:34

我有一个名为strClientNumber的字符串,用于捕获循环中的值,但在循环之外,该字符串在分配对象消除后变为NULL。我错过了什么?

bool blnAbsent = true;
string strClientNumber = "";
foreach (SPListItem item in varCustomerNumbers)
{
    XmlDocument xml = new XmlDocument();
    xml.LoadXml(item["CustomerNumbers"].ToString());
    XmlNodeList nodelist = xml.GetElementsByTagName("user");
    foreach (XmlNode varUser in nodelist)
    {
        if (clientnumber == varUser.InnerText)
        {
            blnAbsent = false;
            strClientNumber = varUser.InnerText;
            this.Controls.Add(new LiteralControl("   <tr><td>" + varUser.InnerText + "</td><td><input name='"'" type='"checkbox'"'n"));
            if (varUser.Attributes["parent"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked'n"));
            this.Controls.Add(new LiteralControl("/></td><td><input name='"'" type='"checkbox'"'n"));
            if (varUser.Attributes["national"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked'n"));
            this.Controls.Add(new LiteralControl("/></td></tr>'n"));
        }
    }
}
if (blnAbsent == true)
{
    this.Controls.Add(new LiteralControl("   <tr><td>" + strClientNumber + "</td><td><input name='"'" type='"checkbox'" /></td><td><input name='"'" type='"checkbox'" /></td></tr>'"'n"));
}

为什么字符串会失去它的值?

如果你查看评论,你会发现发布者接受了讨论中的提示是正确的;然而,海报上的答案很可能会导致不正确的行为。下面的解决方案很可能产生海报所寻找的结果,假设clientnumber是提前已知的,并且不为空。

bool blnAbsent = true;
string strClientNumber = "";
foreach (SPListItem item in varCustomerNumbers)
{
    XmlDocument xml = new XmlDocument();
    xml.LoadXml(item["CustomerNumbers"].ToString());
    XmlNodeList nodelist = xml.GetElementsByTagName("user");
    foreach (XmlNode varUser in nodelist)
    {
        if (clientnumber == varUser.InnerText)
        {
            blnAbsent = false;
            this.Controls.Add(new LiteralControl("   <tr><td>" + varUser.InnerText + "</td><td><input name='"'" type='"checkbox'"'n"));
            if (varUser.Attributes["parent"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked'n"));
            this.Controls.Add(new LiteralControl("/></td><td><input name='"'" type='"checkbox'"'n"));
            if (varUser.Attributes["national"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked'n"));
            this.Controls.Add(new LiteralControl("/></td></tr>'n"));
        }
    }
}
if (blnAbsent == true)
{
    this.Controls.Add(new LiteralControl("   <tr><td>" + clientnumber + "</td><td><input name='"'" type='"checkbox'" /></td><td><input name='"'" type='"checkbox'" /></td></tr>'"'n"));
}

我是个新手…谢谢所有人。

bool blnAbsent = true;
string strClientNumber = "";
foreach (SPListItem item in varCustomerNumbers)
{
    XmlDocument xml = new XmlDocument();
    xml.LoadXml(item["CustomerNumbers"].ToString());
    XmlNodeList nodelist = xml.GetElementsByTagName("user");
    foreach (XmlNode varUser in nodelist)
    {
        strClientNumber = clientnumber;
        if (clientnumber == varUser.InnerText)
        {
            blnAbsent = false;
            this.Controls.Add(new LiteralControl("   <tr><td>" + varUser.InnerText + "</td><td><input name='"'" type='"checkbox'"'n"));
            if (varUser.Attributes["parent"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked'n"));
            this.Controls.Add(new LiteralControl("/></td><td><input name='"'" type='"checkbox'"'n"));
            if (varUser.Attributes["national"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked'n"));
            this.Controls.Add(new LiteralControl("/></td></tr>'n"));
        }
    }
}
if (blnAbsent == true)
{
    this.Controls.Add(new LiteralControl("   <tr><td>" + strClientNumber + "</td><td><input name='"'" type='"checkbox'" /></td><td><input name='"'" type='"checkbox'" /></td></tr>'n"));
}