3

次の違いがある場合は、その違いを知りたいです。

StringBuilder sb = new StringBuilder(); 
sb.Append("xxx");
sb.Append("yyy");
sb.Append("zzz");

と :

StringBuilder sb = new StringBuilder(); 
sb.Append("xxx")
  .Append("yyy")
  .Append("zzz");
4

4 に答える 4

11

違いはありません。後者のケースは「Fluent Syntax」と呼ばれます。

于 2009-12-28T14:34:36.923 に答える
1

機能的な違いはありません。StringBuilder最初のケースでは、3 つのステートメントで同じ順序で文字列を同じものに追加しています。StringBuilder2 番目のケースでは、1 つのステートメントで同じ文字列を同じ文字列に追加しています。

顕著なパフォーマンスの違いはなく、目に見える違いはまったくありません。どちらかをスタイリッシュに選択できます。

于 2009-12-28T14:37:26.827 に答える
1

IL は確かに 2 つの間で異なって見えます。一見すると、連鎖バージョンの方が数ナノ秒速いかもしれません (私は単にナノ秒と言いたいだけです)。しかし、コードのリファクタリングを考慮する必要はありません。どちらか一方がきれいに見える場合は、その道を進みます。

それはいつも私を悩ませていましStringBuilder.Appendた。これにより、StringBuilder が不変の構造であると考えるようになりますが、そうではないことは間違いありません。また、返されるものを明示的に無視する必要がある F# では特に厄介です。でもどうする?

于 2009-12-28T14:42:21.793 に答える
0

それらの間に違いはありません。ただし、コード行を減らすために2番目のものを使用できます:)

于 2009-12-28T14:36:04.300 に答える