1

私は小さな迷路ゲームを作っていますが、1 つの小さな問題で立ち往生しています。プレイヤーが勝った場合、MessageBox がポップアップし、お祝いのメッセージが表示され、タイマーを使用してかかった時間を表示します。ゲームがプレイされているように撮影しています。メッセージボックスのコードは次のとおりです。

MessageBox.Show("Congratulations! You've beaten the maze! It took you: "+gameElapsed); 

gameElapsed はタイマーの int です。テキストの後に問題なく秒が表示されます。その後、「秒」と言うテキストが表示されるだけで、問題が発生しています。

したがって、MessageBox に「おめでとう! 迷路をクリアしました! かかった時間: X 秒」と表示させたいと思います。

X は gameElapsed、タイマー int です。

問題を十分に明確に説明できたことを願っています。事前に助けてくれてありがとう。

4

3 に答える 3

3

string.Formatはより良いと思います:

MessageBox.Show(string.Format("Congratulations! You've beaten the maze! It took you: {0} seconds", gameElapsed));

非リテラル文字列で演算子を使用する+と、実行時に連結が実行されます。
実行時に複数の文字列を連結するには、この+演算子を使用しないでください。これは、ガベージ コレクションされたヒープに複数の文字列オブジェクトが作成されるためです。
代わりに、System.Text.StringBuildertype または usestring.Formatメソッドを使用してください。(内部で string.Format使用します。)System.Text.StringBuilder

したがって、次のことをお勧めします。

  • string.Format少量の文字列に 使用する、または高レベルの読みやすさが必要な場合。
  • System.Text.StringBuilder多数の文字列に使用します。
  • リテラル文字列を使用+すると、C# コンパイラはコンパイル時にそれらを連結し、最終的に 1 つの文字列だけを配置します。
于 2012-12-18T04:49:43.180 に答える
2

これを試しましたか:

MessageBox.Show("Congratulations! You've beaten the maze! It took you: "+ gameElapsed + " Seconds");
于 2012-12-18T04:19:05.663 に答える
1
MessageBox.Show("Congratulations! You've beaten the maze! It took you: "+gameElapsed.ToString() + " seconds"); 

印刷されます:

おめでとう!あなたは迷路を破った!かかった時間: 4 秒

于 2012-12-18T04:18:27.480 に答える