2016-10-05 6 views
-2

私の現在のプロジェクトでは、connectionStringを動的に設定したいと思います。 プレースホルダ("|DataDirectory|")の文字列をデフォルト設定から取得し、そのプレースホルダを実際のパスに置き換えたいとします。String.Replace()は "|"で動作しません

マイコード:私はそれを動作させることはできません

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

、それは何もしません。 dubugモードでコードを実行すると、接続文字列に「|DataDirectory|」が含まれていることがわかりますが、置き換えられません。

string.replace()について多くの質問がありましたが、問題はありません。だから誰でもアイデア?

EDIT:ありがとう、ありがとう。そのような初心者の間違い。

+3

文字列を置き換えていますが、割り当てられていないため、置換文字列自体には置き換えられません。接続文字列に戻す必要があります。 – Icepickle

答えて

7

はあなたがPure Methodの戻り値を使用していない

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

ありがとうございます。約半年今私はそのような悪い間違いをし始めている... – 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; 
} 

戻り値

関連する問題