3

私が遭遇するほとんどのコードでは、String.Format()を使用しているときに、intまたは他の数値を文字列に明示的に変換しますが、私が気付いたところ、それは必要ありません。文字列として使用する前に、数値を文字列に明示的に変換する必要がある、不足しているものはありますか?

明示的:

int i = 13;
string example = String.Format("If a Friday lands on the {0}th of the month, it is generally considered to be an unlucky day!",
                               i.ToString());

これは次のように生成exampleされます:"If a Friday lands on the 13th of the month, it is generally considered to be an unlucky day!"

非明示的:

int i = 13;
string example = String.Format("If a Friday lands on the {0}th of the month, it is generally considered to be an unlucky day!",
                                i);

これは次のように生成exampleされます:("If a Friday lands on the 13th of the month, it is generally considered to be an unlucky day!"明示的に変換するのと同じです)。では、なぜ私が見るコーダーの大多数がこれを行うのでしょうか?

4

3 に答える 3

7

暗黙的な変換を使用する場合は、が最初intにボックス化されます。objectこれは小さなパフォーマンスヒットですが、一部の人々は重要だと考えているようで、コードを説明している可能性があります。

確かに、ジェフリー・リッチターは、C#を介した彼の優れたCLRで、これについて(この種のものの使用を奨励して)書いています。それは私がそれについてブログを書いたほど私を苛立たせました:)

もちろん、場所によってはボクシングが関係する場合もありますがstring.Format、フォーマット文字列を調べたり、他のすべてのことを行う必要があることを考えると、ここで重要になるとは思わないでしょう...そしてそれはあなたが何であるかを考える前です次の文字列を処理します:)

于 2013-01-22T20:25:59.530 に答える
0

私は本当にこれをする理由がわかりません。これString.Format()はすでに行われているので、ご指摘のとおり、それをString.Format()処理するだけで、よりコンパクトになり、IMOが読みやすくなります。

于 2013-01-22T20:24:46.113 に答える
0

私たちはルールに慣れているので、あなたも慣れたほうがいいでしょう。String.Format()は巧妙な方法ですが、すべての方法はそうではありません。はオブジェクトをString.Format()受け取るので変換する必要はありませんが、変換する場合でもオブジェクトを送信していることに注意してください。

于 2013-01-22T20:29:40.437 に答える