2016-10-05 5 views
-2

в моем текущем проекте Я хочу установить connectionString динамически. Я получаю строку с заполнителем ("|DataDirectory|") из моих настроек по умолчанию, а затем я хочу заменить этот заполнитель фактическим путем.String.Replace() не работает с "|"

Мой код:

connectionString = Properties.Settings.Default.KDatabaseConnectionString; 
connectionString.Replace(@"|DataDirectory|", Application.StartupPath); 

Я не могу заставить его работать, он ничего не делает. Когда я запускаю код в режиме dubug, я вижу, что строка подключения содержит «|DataDirectory|», но она не заменяет его.

У меня много вопросов здесь о string.replace() не работает, но никто из них о моей проблеме. Так кто-нибудь идея?

EDIT: ОК получил, спасибо. Такая неудачная ошибка новичка.

+3

ну, вы заменяете строку, но не назначая ее, заменитель не работает на неизменяемой строке, вам нужно назначить ее обратно connectionString – Icepickle

ответ

7

Вы не прикладывая результат обратно в connectionString

Попробуйте

connectionString = Properties.Settings.Default.KDatabaseConnectionString; 
connectionString = connectionString.Replace(@"|DataDirectory|", Application.StartupPath); 
+0

Спасибо, не закодировал около полугода и теперь я начинаю делать такие плохие ошибки ... – Harlehatschi

+0

Не против. Я думаю, что большинство из нас, по крайней мере, испытали или даже совершили подобные ошибки более одного раза в своей карьере;) –

0
connectionString = connectionString.Replace(@"|DataDirectory|", Application.StartupPath); 
+1

Просьба предоставить дополнительную информацию, почему этот ответ решает проблему –

1

Вы не используете возвращаемое значение Pure Method.

Иными словами, метод .Replace() фактически ничего не делает для самой переменной, просто возвращает новое значение для вас.

Утверждение, что вам нужно, это:

connectionString = connectionString.Replace(@"|DataDirectory|", Application.StartupPath);

В противном случае вы делаете эквивалент:

public string Replace(string str) 
{ 
     Do something... 
     return str; 
} 

Где ул передается по Value не Reference, а затем не используя возвращаемое значение.

 Смежные вопросы

  • Нет связанных вопросов^_^