我不知道为什么这不起作用,我只是传递一个空白字符串和一个数字,它应该检查该数字是否在字符串中,如果没有那么它应该将它添加到字符串中。变量'thing'得到设置但它应该更新的全局变量(strduplicates)永远不会更新。
我这样调用这个函数 Trackstats(strduplicates, “1337”);
private void TrackStats(string thing, string variable)
{
if (!(thing.Contains(variable)))
{
thing += variable + ",";
}
}
答案 0 :(得分:3)
更好的设计可能是返回新值:
private string TrackStats(string thing, string variable)
{
if (!(thing.Contains(variable)))
{
thing += variable + ",";
}
return thing;
}
并使用:
调用它strduplicates = this.TrackStats(strduplicates, "1337");
答案 1 :(得分:1)
您按值传递thing
。您需要通过引用传递它以使更改在方法外可见:
private void TrackStats(ref string thing, string variable)
{
if (!(thing.Contains(variable)))
{
thing += variable + ",";
}
}
答案 2 :(得分:1)
.NET中的字符串是不可变的。每次修改都将分配并返回一个新实例。
要更改全局变量,必须将其作为ref
参数传递,如下所示:
private void TrackStats(ref string thing, string variable)
{
if (!(thing.Contains(variable)))
{
thing += variable + ",";
}
}
然后你可以这样称呼它:
TrackStats(ref strduplicates, "42");
答案 3 :(得分:0)
string thing不是输出参数。使用'out string thing'来表示输出。