2016-10-05 2 views
-2

내 현재 프로젝트에서 connectionString을 동적으로 설정하려고합니다. 기본 설정에서 자리 표시 자 ("|DataDirectory|")로 문자열을 얻은 다음 해당 자리 표시자를 실제 경로로 바꾸려고합니다.String.Replace()가 "|"과 함께 작동하지 않습니다.

내 코드 :

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

나는 아무것도하지 않습니다,이 동작하지 않습니다. 더 버그 모드에서 코드를 실행하면 연결 문자열에 "|DataDirectory|"이 포함되어 있지만 그 코드가 바뀌지는 않습니다.

string.replace()에 대한 많은 질문을 본 적이 있지만 문제는 아닙니다. 그럼 누구 아이디어 야?

편집 : 알겠습니다. 감사합니다. 그런 나쁜 초보자 실수.

+3

글쎄, 당신은 문자열을 대체하는 것이지만, 그것을 대체하지 않는다면, 바꾸기가 불변의 문자열 자체에서 작동하지 않는다. 다시 connectionString에 할당해야한다. – Icepickle

답변

7

당신은 당신은 Pure Method의 반환 값을 사용하지

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

고마워, 약 1 년 반 동안 코드를 작성하지 않았다. 지금 나는 그런 나쁜 실수를하기 시작하고있다 ... – Harlehatschi

+0

괜찮아. 나는 대부분의 사람들이 적어도 경력을 쌓은 경험이 있거나 심지어 비슷한 실수를 한 번 이상했다고 생각합니다.) –

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

이 대답이 왜이 문제를 해결하는지 자세히 설명해주십시오. –

1

을 시도 connectionString

에 다시 결과를두고 있지 않습니다.

즉, .Replace() 메서드는 실제로 변수 자체에 아무런 변화도주지 않고 새로운 값을 반환하기 만합니다.

필요한 문은 다음과 같습니다

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

그렇지 않으면 당신의 동등한 일을하는지 :

STR이 Reference로하지 Value 통과 후를 사용하지 않는
public string Replace(string str) 
{ 
     Do something... 
     return str; 
} 

반환 값.

관련 문제