Программист из меня так себе. В свое время самостоятельно освоил C++ - но где-то на полпути бросил.
Знаний хватало, чтобы писать программы для себя, пробовать писать программы для продажи по Shareware-лицензии (была такая в свое время). Даже удалось написать программу, которая до сих пор пользуется популярностью (!) и бродит по просторам интернета (а дело было много лет назад).
Потом все бросил. Последнее время иногда что-то нужно написать под собственные нужды. По привычке выбираю C++. Но я уже давно знаком с C# и "со словарем" (IntelliSense + MSDN) могу что-то наваять. Но я не знаток языка.
А тут сегодня не мог понять. Использую стандартный метод для строки "заменить" (String.Replace), а он ничего не заменяет. Как строка была, так и осталась. Что за ..?
Оказывается строка в C# имеет особый статус (это объект) и обычно неизменяема.
Сначала я делал так:
string newString = oldString.Replace("bad word", "good word");
Проверяю newString - а там старая строка без замен.
Оказывается правильно будет написать так (как прочитал в инете: "это типичная ошибка"):
oldString = oldString.Replace("bad word", "good word");
string newString = oldString;
Вот так все работает. Только непривычно как-то.
Не буду вдаваться в подробности, почему так. Я и сам не сильно это понимаю (хотя ясно, что строка ведет себя как объект, а не как простая переменная.)
Знаний хватало, чтобы писать программы для себя, пробовать писать программы для продажи по Shareware-лицензии (была такая в свое время). Даже удалось написать программу, которая до сих пор пользуется популярностью (!) и бродит по просторам интернета (а дело было много лет назад).
Потом все бросил. Последнее время иногда что-то нужно написать под собственные нужды. По привычке выбираю C++. Но я уже давно знаком с C# и "со словарем" (IntelliSense + MSDN) могу что-то наваять. Но я не знаток языка.
А тут сегодня не мог понять. Использую стандартный метод для строки "заменить" (String.Replace), а он ничего не заменяет. Как строка была, так и осталась. Что за ..?
Оказывается строка в C# имеет особый статус (это объект) и обычно неизменяема.
Сначала я делал так:
string newString = oldString.Replace("bad word", "good word");
Проверяю newString - а там старая строка без замен.
Оказывается правильно будет написать так (как прочитал в инете: "это типичная ошибка"):
oldString = oldString.Replace("bad word", "good word");
string newString = oldString;
Вот так все работает. Только непривычно как-то.
Не буду вдаваться в подробности, почему так. Я и сам не сильно это понимаю (хотя ясно, что строка ведет себя как объект, а не как простая переменная.)
Спасибо дружище!
ОтветитьУдалитьОгромное спасибо!
ОтветитьУдалитьВсе это хорошо
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалить