配列に文字列が入っていて、これをカンマ区切りでつなぎたいのです。
オールドスタイルな私は以下のコードを書きました。
20年前なら、このコードでも良いかと思いますが、最新の環境であればシンプルでもっと良い書き方があるのではと思います。どうなのでしょう?
以下のコードをレビューしてもらえますか。
(ここに記述したコードを記載)
private void button1_Click(object sender, EventArgs e)
{
string[] items = {"ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ", "もーもー珈琲牛乳"};
string result = "";
for (int i=0;i<items.Length; i++){
result += items[i]+", ";
}
if (result.Length > 2)
{
result = result.Substring(0, result.Length - 2);
}
textBox1.Text = result;
}
または
private void button1_Click(object sender, EventArgs e)
{
string[] items = {"ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ", "もーもー珈琲牛乳"};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < items.Length; i++) {
sb.Append(items[i]);
sb.Append(", ");
}
if (sb.Length > 2) sb.Length -= 2;
textBox1.Text = sb.ToString();
}
要素を指定した文字列でつなぐ場合には、String.Join() メソッドを利用するのがパフォーマンス的にも記述のシンプルさでも良いです。
以下のフォームを作成します。テキストボックスとボタンを1つずつ配置します。
以下のコードを記述します。
private void button1_Click(object sender, EventArgs e)
{
string[] items = {"ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ", "もーもー珈琲牛乳"};
textBox1.Text = String.Join(", ",items);
}
プロジェクトを実行します。下図のウィドウが表示されます。
[button1]をクリックします。下図の結果となります。
末尾のカンマは無しの結果になります。
ぺんぎんクッキー, らくだキャラメル, しろくまアイス, かるがもサブレ, もーもー珈琲牛乳
便利なメソッドはいろいろありますが、知らなければ、使えないのはその通りです。
良い対策として、記述したコードをLLMにレビューしてもらう方法があります。
今回のコードをClaude Opus 4.5にレビューしてもらう例です。
以下のコードをレビューしてもらえますか。
private void button1_Click(object sender, EventArgs e)
{
string[] items = {"ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ", "もーもー珈琲牛乳"};
string result = "";
for (int i=0;i<items.Length; i++){
result += items[i]+", ";
}
if (result.Length > 2)
{
result = result.Substring(0, result.Length - 2);
}
textBox1.Text = result;
}
string.join を利用するコードを提案してもらえました。