2

私は C# で Unity3D をコーディングしています。デバッグ ステートメントまたはコンソール ステートメントを印刷または使用するときは、常に次のようなものを使用しています。

Debug.Log("The sum of these two variables is :" + SumOfVariables);

しかし、私は新しい本を読んで、より良いプログラマーになることを学び、代わりにこれをよく使用します。

Debug.Log("The sum of these two variables is {0}", SumOfVariables);

どちらでも構わないと思いますが、後者を使うメリットはありますか?また、Unity を使用している場合は、そのように使用しようとするとエラー メッセージが表示されますが、最初の方法を使用すると問題なく動作します。基本的に、Debug.Logにはそのためのパラメーターがありません。また、文字列式を UnityEngine.Object 型に変換できません。私が使用している変数は、クラスの文字列プロパティです。

私の質問は、ユニティピースについてではなく、どちらが優れているかについてです。しかし、なぜそのエラーが発生したのかを教えてほしい場合は、追加の信用を得ることができます. 以前にも質問された事があると思いますが、検索してみると色々な話題が出てきていたので、先に失礼します、回答ありがとうございます!!

4

5 に答える 5

4

文字列連結の代わりにフォーマット文字列を使用する理由は、ローカライズが可能になるためです。フォーマット文字列を別の言語に翻訳するのは簡単ですが、コードを書き直すのは困難です。

"{0}: invalid photoscamp (id={1}) inside flange"

豚のラテン語では、

"{0}: invaliday otoscamphay (iday={1}) insidea angeflay"

パフォーマンス、コードの読みやすさ、フォーマット文字列をファイルまたはデータベースに保存する機能など、フォーマット文字列を使用する理由は他にもあります。C# 文字列出力: format または concat?を参照してください。なぜ String.Formatを使用するのですか? .

于 2013-05-19T19:59:16.260 に答える
3

{}フォーマット文字列バージョンを使用すると、変数の繰り返しが簡単になります。

さらに、プレースホルダーを使用して文字列を 1 つの項目として読み取り、プレースホルダーを追加するのが簡単になります (別の項目に{}適切なインデックスを付けて、別のパラメーターを挿入するだけです)。

一般に、フォーマット文字列は読みやすく、後で変更しやすい傾向があります。

于 2013-05-19T19:55:45.567 に答える
0

Debug.Log メソッドの署名を見てください。2 番目のバージョンには次のようなものがあります。

string format, params object[] p

したがって、最初のパラメーターは形式であり、「2 番目の」パラメーターは実際には、形式文字列の置換を表す可変数のパラメーターです。

2 番目の方法は、コードのメンテナンスの観点から推奨されます。コードの意図を読みやすく、後で変更しやすいため、文字列を連結するよりも優れています。

なぜ 2 番目の方法で機能しないのかという質問に答えるには、フォーマット文字列を最初のパラメーターとして受け取る Debug.Log のオーバーロードがない可能性があります。他のロギング フレームワーク (および、Debug.WriteLine など) の場合は、通常、format パラメーターがあります。

于 2013-05-19T20:02:27.353 に答える
0

これは、異なるタイプの文字列補間です。ほとんどの場合、見た目の理由だけですが、ブラケットの方が使いやすいと感じる人もいます

于 2013-05-19T19:57:16.110 に答える