FC2ブログ

C#で効率的に文字列を連結する

  • Day:2011.12.19 19:27
  • Cat:C#
C#で文字列の内容を変更するようなコードを書いたとしても、
実際には新しい文字列オブジェクトが生成されて、古いオブジェクトはガベージになります。


string msg = "Welcome ";
msg += "to ";
msg += "Koganeblog.";
これは次のコードに示すように非効率です。


// このコードはコンパイルできません
string msg = "Welcome ";
string tmp1 = new String(msg + "to ");
msg = tmp1; // "Welcome "はガベージになる。
string tmp2 = new String(msg + "Koganeblog.");
msg = tmp2; // "Welcome to "はガベージになる。
tmp1とtmp2、そして一番最初のmsg("Welcome ")がガベージになります。
stringクラスの+=メソッドでは、新しい文字列オブジェクトが生成されて、それが返されます。
既存のオブジェクトを変更して、別の文字列が連結された状態にすることはできません。

このような場合は、string.Format()メソッドを使用すると効率的です。


string msg = string.Format("{0}{1}{2}", "Welcome ", "to ", "Koganeblog.");
Effective C# 4.0

Comment

Comment Form
公開設定

Trackback


→ この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。