codeseek
TOP
サンプル解説
プログラミング考
codeseekBlog
勉強会
リンク
プロフィール
お読みください
掲示板(SPAMのため閉鎖)







累計:
本日
昨日



Microsoft .NET 関連サンプルの解説


5、StringBuilderクラス

文字列の連結を効率よく行うためのStringBuilderクラスについて解説します。

StringBuilderクラスは文字列を連結するときにつかいます。
ASP.NETではhtmlの編集でよく使います。
データベースを使うプログラムではSQLの編集によく使います。

Stringで文字列の連結を行うべきではありません。
Stringでの文字列は「不変」であるとされ、オブジェクトの作成時にしか値の設定ができず、文字列の連結をオブジェクトの生成と破棄を繰り返すことで実現されているからです。これはパフォーマンスを落とすことを意味しています。


StringBuilderの説明は

MSDN Japan Home >  MSDN Library Japan >  .NET Framework >  リファレンス >  クラス ライブラリ >  System.Text > StringBuilder

にあるのですが、ここ自身にはサンプルや詳しい説明がありません。
しかたがないので、以下のものを参考にしました。

[HOW TO] Visual Basic .NET で文字列連結のパフォーマンスを上げる方法
[HOW TO] Visual C# .NET における文字列連結のパフォーマンスを向上させる方法


このサンプルのここだけを読めばOK:

・VB.NETのサンプル
Dim sb As New Text.StringBuilder(CInt(sLen * Loops * 1.1))
For I = 1 To Loops
  sb.Append(sSource)
Next I
sDest = sb.ToString()


・C#のサンプル

System.Text.StringBuilder sb =
        new System.Text.StringBuilder((int)(sLen * Loops * 1.1));
for(i=0;i<Loops;i++) sb.Append(sSource);
sDest = sb.ToString();


これではちょっと分かりづらいので、もうちょっと単純な例を書きました。

・VB.NETのサンプル
dim sbMsg as new System.Text.StringBuilder("a")
sbMsg.Append("b")
sbMsg.Append("c")
MessageBox.Show(sbMsg.ToString())

・C#のサンプル
System.Text.StringBuilder sbMsg = new System.Text.StringBuilder("a");
sbMsg.Append("b");
sbMsg.Append("c");
MessageBox.Show(sbMsg.ToString());



考察:
生成、Append、ToStringだけを覚えれば使えます。

Insert、Replace、Removeメソッドが存在していることを覚えておくと楽ができることがあるかもしれません。

Stringの+オペレータでの記述ではなく、Appendメソッドでの記述になることで、少なくとも私には読みにくいコードに感じます。これは、文字列を連結するという意図を単純に表現している「+」という記号が直感的であるのに反して、「Append」という英単語は読まされていると感じるからだと思います。


StringBuilderの追加情報: