Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么字符串会失去它的值?_C# - Fatal编程技术网

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

C# 为什么字符串会失去它的值?,c#,C#,我有一个名为strClientNumber的字符串,用于捕获循环中的值,但在循环外部,在消除赋值对象后,该字符串变为NULL。我错过了什么 bool blnAbsent = true; string strClientNumber = ""; foreach (SPListItem item in varCustomerNumbers) { XmlDocument xml = new XmlDocument(); xml.LoadXml(item["CustomerNumbers

我有一个名为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"));
}
bool blnAbsent=true;
字符串strClientNumber=“”;
foreach(VarCustomerNumber中的SPListItem项)
{
XmlDocument xml=新的XmlDocument();
LoadXml(项[“CustomerNumber”].ToString());
XmlNodeList nodelist=xml.GetElementsByTagName(“用户”);
foreach(节点列表中的XmlNode varUser)
{
if(clientnumber==varUser.InnerText)
{
blnAbsent=false;
strClientNumber=varUser.InnerText;
this.Controls.Add(新的LiteralControl(“+varUser.InnerText+”\n”);
}
}
}
如果(blnAbsent==true)
{
this.Controls.Add(新的LiteralControl(“+strClientNumber+“\”\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;
字符串strClientNumber=“”;
foreach(VarCustomerNumber中的SPListItem项)
{
XmlDocument xml=新的XmlDocument();
LoadXml(项[“CustomerNumber”].ToString());
XmlNodeList nodelist=xml.GetElementsByTagName(“用户”);
foreach(节点列表中的XmlNode varUser)
{
if(clientnumber==varUser.InnerText)
{
blnAbsent=false;
this.Controls.Add(新的LiteralControl(“+varUser.InnerText+”\n”);
}
}
}
如果(blnAbsent==true)
{
this.Controls.Add(新的LiteralControl(“+clientnumber+“\”\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"));
}
bool blnAbsent=true;
字符串strClientNumber=“”;
foreach(VarCustomerNumber中的SPListItem项)
{
XmlDocument xml=新的XmlDocument();
LoadXml(项[“CustomerNumber”].ToString());
XmlNodeList nodelist=xml.GetElementsByTagName(“用户”);
foreach(节点列表中的XmlNode varUser)
{
strClientNumber=客户编号;
if(clientnumber==varUser.InnerText)
{
blnAbsent=false;
this.Controls.Add(新的LiteralControl(“+varUser.InnerText+”\n”);
}
}
}
如果(blnAbsent==true)
{
this.Controls.Add(新的LiteralControl(“+strClientNumber+”\n”);
}

什么是“循环外”呢?在哪一点检查变量的值?注意,我在代码行分配变量:strClientNumber=varUser.InnerText;然后稍后引用它this.Controls.Add(新的LiteralControl(“+strClientNumber…什么是clientnumber?如果您已经有了它”clientnumber==varUser.InnerText“那么为什么不直接设置它呢?如果
varUser.InnerText
为空,那么代码的行为就完全有意义了。你确定clientnumber不为空吗?如果blnAbsent为真,那么应该分配strClientNumber的代码从一开始就没有到达。clientnumber已经是一个字符串。其余的代码工作正常。When I debug,我对strClientNumber很感兴趣。strClientNumber在第二个foreach循环中分配。调试时,它具有正确的值。循环完成后,strClientNumber变为NULL,因为分配了strClientNumber值的varUser.InnerText不再存在。请查看有关此问题的讨论,以确定e问题的实际解决方案。虽然海报接受了这个答案,但它并不能解决最初的问题。不要太难过……每个人都有这样的时刻。