字符串函数未更新全局变量
本文关键字:全局变量 更新 函数 字符串 | 更新日期: 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"来发出输出信号。