字符串函数未更新全局变量

本文关键字:全局变量 更新 函数 字符串 | 更新日期: 2023-09-27 18:20:19

我不确定为什么不起作用,我只是传递了一个空白字符串和一个数字,它应该检查这个数字是否在字符串中,如果不在,它应该将其添加到字符串中。变量'thing'被设置,但它应该更新的全局变量(strduplicates)从未更新。

我这样调用函数Trackstats(strduplicates,"1337");

     private void TrackStats(string thing, string variable)
    {
        if (!(thing.Contains(variable)))
        {
            thing += variable + ",";
        }           
    }

字符串函数未更新全局变量

更好的设计可能是返回新值:

private string TrackStats(string thing, string variable)
{
    if (!(thing.Contains(variable)))
    {
        thing += variable + ",";
    }         
    return thing;  
}

并使用进行调用

strduplicates = this.TrackStats(strduplicates, "1337");

您正在按值传递thing。您需要通过引用传递它,以使更改在方法之外可见:

private void TrackStats(ref string thing, string variable)
{
    if (!(thing.Contains(variable)))
    {
        thing += variable + ",";
    }           
}

.NET中的字符串是不可变的。每次修改都会分配并返回一个新实例。

要更改全局变量,必须将其作为ref参数传递,如下所示:

 private void TrackStats(ref string thing, string variable) 
{ 
    if (!(thing.Contains(variable))) 
    { 
        thing += variable + ","; 
    }            
} 

然后你可以这样称呼它:

TrackStats(ref strduplicates, "42");

字符串不是输出参数。使用"out string thing"来发出输出信号。