4

StringBuilderMSDN はオブジェクトをに変換する必要があると言っていますがstringStringBuilderうまくいきますか? なぜ改宗する必要があるのでしょうか。

string[] spellings = { "hi", "hiii", "hiae" };

StringBuilder Builder = new StringBuilder();

int counter = 1;

foreach (string value in spellings)
{
    Builder.AppendFormat("({0}) Which is Right spelling? {1}", counter, value);
    Builder.AppendLine();
    counter++;
}

Console.WriteLine(Builder); // Works Perfectly
//Why should i use tostring like below
Console.WriteLine(Builder.ToString());
// Does it make any difference in above two ways.

Console.ReadLine();
4

4 に答える 4

0

これは、Web フォームのコード ビハインドからのものです。私は StringBuilder に数回追加しましたが、誤って追加しました

return "[" + sbFinalContents + "]";

そして、私はそれで何の問題もありませんでした。誤って ToString() の部分を省略してしまい、数日間気付かなかったのです。これが爆発しない理由は何ですか?

StringBuilder.ToString Method (.net 4.) : 「StringBuilder オブジェクトで表される文字列を String パラメータを持つメソッドに渡す前に、ToString メソッドを呼び出して StringBuilder オブジェクトを String オブジェクトに変換する必要があります。ユーザーインターフェース。

技術的には、どちらも行っていません (文字列を返すだけです) が、まだ失敗していないことに驚いています。

于 2015-10-18T09:21:30.320 に答える
0

コンソールに書き込むコードの両方の行は、同じことを別の方法で行っています。ただし、2番目の方がより明白です。

Console.WriteLine(Builder);WriteLine()オブジェクトを取るオーバーロードされたメソッドを使用します。ここで述べたように、ToString()メソッドは以下で呼び出されますBuilder

'値が null の場合、行末記号のみが書き込まれます。それ以外の場合は、値の ToString メソッドが呼び出されてその文字列表現が生成され、結果の文字列が標準出力ストリームに書き込まれます。

2 行目では、メソッドを明示的にConsole.WriteLine(Builder.ToString());呼び出しています。ToString()これは、コードが何を行っているかが開発者にすぐにわかるため、望ましい方法です。

于 2013-08-07T09:25:12.613 に答える