Функция String не обновляет глобальную переменную - PullRequest
1 голос
/ 16 января 2012

Я не уверен, почему это не работает, я просто передаю пустую строку и число, и он должен проверить, есть ли это число в строке, если нет, то он должен добавить его в строку. Переменная 'thing' устанавливаетсяно глобальная переменная, которую предполагается обновить (strduplicates), никогда не обновляется.

Я вызываю функцию, подобную этой Trackstats (strduplicates, "1337");

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

Ответы [ 4 ]

3 голосов
/ 16 января 2012

Лучшим вариантом может быть возвращение нового значения:

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

    return thing;  
}

и вызов его с помощью:

strduplicates = this.TrackStats(strduplicates, "1337");
1 голос
/ 16 января 2012

Строки в .NET являются неизменяемыми.Каждая модификация будет выделять и возвращать новый экземпляр.

Чтобы изменить вашу глобальную переменную, вы должны передать ее как параметр ref, например:

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

Затем вы можете вызвать егокак это:

TrackStats(ref strduplicates, "42");
1 голос
/ 16 января 2012

Вы передаете thing по значению.Вам нужно передать его по ссылке, чтобы сделать изменения видимыми вне метода:

private void TrackStats(ref string thing, string variable)
{
    if (!(thing.Contains(variable)))
    {
        thing += variable + ",";
    }           
}
0 голосов
/ 16 января 2012

строка не является выходным параметром. Используйте 'out string thing' для подачи сигнала на вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...