- - PR -
StringBuilderのクリアは、可能?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-07-19 20:59
StringBuilderを使用して、文字列を追加した後、クリアしたいのですが、クリアする方法が見当たりません。方法は、ありますでしょうか?
| ||||
|
投稿日時: 2008-07-19 21:13
Length プロパティを 0 にすればクリアできます。
| ||||
|
投稿日時: 2008-07-20 08:29
mitchinさん、有難うございます。
調べても解らなかったので、助かりました。 | ||||
|
投稿日時: 2008-07-20 12:11
何のためにクリアしたいのでしょう。 私には必要となる場面が想定できません。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-07-20 14:15
ひとつ思いつく状況としては、StringBuilder を値オブジェクトとして使わないような場合は、クリアしたいことがあります。StringBuilder のインスタンスの同一性を検査するような場合です。 バグりやすいのでまずやりたくはないですが、オブジェクトである以上、できる手立てはクラスライブラリーの側で備えていてほしい機能だと思います。 ただ、私としては Clear メソッドとして備えてほしいです。Length プロパティーは派生した値なので、それに設定(set)してオブジェクトの状態を変化できるというのはなんだけ違和感があります。 | ||||
|
投稿日時: 2008-07-20 15:42
いまいち意味がわからないんですが、具体的にどんな場合になるんでしょう?? たまに見かけるのは、StringBuilderのインスタンスを使いまわすことでパフォーマンスを稼ぐという話ですね。 しかし、実際にはこれもわざわざやる意味はあんまりないと思います。 状況に依存するので一概に良くなるものでもないですし、それほど大幅に差が出るものでもありません。 | ||||
|
投稿日時: 2008-07-20 16:20
簡単に書くと以下のようなロジックを考えていました。 Appendする回数は多くなく、stringで、"+=" を使用しても パフォーマンスは、たいして変わらないとは、思いますが、 このような使用は一般的では、ないのでしょうか? Dim sb As System.Text.StringBuilder Do While 〜 sb.Length = 0 'ここでクリアしたい Do While 〜 sb.Append("A") sb.Append("B") sb.Append("C") 〜 Loop Loop | ||||
|
投稿日時: 2008-07-20 18:14
Clear 機能があって悪いことはないと思いますが、私も使わないと思います。
fjdsskl さんのケース、私ならこう書くと思います。
こちらの方が変数のスコープが狭くなるので良いと思います。 確かにインスタンスを作成する回数は増えますが、 パフォーマンスに多少の差はあっても、大差にはならないと思います。 (検証したわけではありませんが) |