2017-12-05 18 views
0

私の情報をより効果的に処理するために、文字列ビルダを使用しています。 Imは(少なくとも)秒ごとにこれをやって、そしてイムは思っ、それは私がより良いメモリ管理を持っている、とイム望んで誰かがここに知っているこれら二つののかわからないですStringBuilder.Clear();StringBuilder.Lenght = 0;Xamarin Android - Handling StringBuilders

を使用することをお勧めします。それとも違いがありますか?

答えて

1

Clear()は、Lengthより後で(4.0以降)導入されました。それは主な違いです。より低い.NETバージョンをサポートすることを考慮しない場合は、Clear()に行ってください。 Performancewise Length = 0は、Clear()がそれをinternと呼びますが、特に1秒に1回だけ呼び出す場合には大きな違いはありません。避けてくださいPremature Optimization。私はClear()に行きます。なぜなら、それは読みやすく、他のオプションがなくなったパフォーマンス重大シナリオではLength = 0しか使用しないからです。

これは、Microsoftのソース実装です:

// Convenience method for sb.Length=0; 
public StringBuilder Clear() { 
    this.Length = 0; 
    return this; 
} 

https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs

モノは同じ実装を使用しています。

https://github.com/mono/mono/blob/master/mcs/class/referencesource/mscorlib/system/text/stringbuilder.cs

+0

ありがとうございました! 私のアプリケーションがデータの取得と計算(そしてチェックしている)の束をそれぞれの更新間隔で実行していることを考えれば、できるだけ多くのパフォーマンスが必要なので、私はLenght = 0を代わりに使用します。この関数にはstringbuilderが含まれているため、パフォーマンスのオーバーヘッドが大きくなる可能性があります。 – Nevaran