リストや配列の代入の右辺の値が大括弧"[" "]"でくくられている - C#

リストや配列の代入の右辺の値が大括弧"[" "]"でくくられているコードについての紹介です。

概要

新しいC#のソースコードで次のコードがあります。
int[] value = [4, 5, 6, 1, 2, 3];

従来は以下の記述をしていたため、最初に見かけた際には違和感があります。(参考ページ)
  int[] value = new int[6] { 4, 5, 6, 1, 2, 3 };
または
  int[] value = {4, 5, 6, 1, 2, 3};

コレクション型も同様の記述のコードがあります。
List<string> value = ["ふわふわソファー", "ちいさなデスク", "シンプルスタンド"];

従来の書式では以下のコレクション初期化子を利用した記述が可能です。(参考ページ)
List<string> value = new List<string>() {"ふわふわソファー", "ちいさなデスク", "シンプルスタンド"};
newの後ろの型名は省略できるため、以下の記述もあります。
List<string> value = new (){"ふわふわソファー", "ちいさなデスク", "シンプルスタンド"};

コレクション式

新しいC#のバージョン(.NET 8.0 以降)では「コレクション式」と呼ばれる記述が利用でき、大括弧[ ] で値を囲む記述で配列やリストに初期値を代入できるようになりました。

書式

(配列変数名) = [要素0の値, 要素1の値, 要素2の値, ... ,要素nの値];
(コレクション型の変数) = [要素0の値, 要素1の値, 要素2の値, ... ,要素nの値];

記述例

int[] PriceList = [180, 230, 400];
List<string> Items = ["ふわふわソファー","ちいさなテーブル","おしゃれスタンド"];

プログラム例1

UI

下図のフォームを作成します。テキストボックスとボタンを配置します。

コード

下図のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SimpleCollectionExpressions
{
  public partial class FormArrayCollectionExpression : Form
  {
    public FormArrayCollectionExpression()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      int[] value = [4, 5, 6, 1, 2, 3];

      for (int i = 0; i < value.Length; i++) {
        textBox1.Text += value[i].ToString() + ", ";
      }
    }
  }
}

解説

配列を宣言し初期値をコレクション式で代入しています。
  int[] value = [4, 5, 6, 1, 2, 3];

実行結果

上記のプログラムを実行します。下図のウィンドウが表示されます。


[button1]をクリックします。コレクション式で代入した値がテキストボックスに表示されます。


通常の代入と同様の処理がコレクション式で実装できました。

プログラム例2

UI

下図のフォームを作成します。テキストボックスとボタンを配置します。

コード

以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SimpleCollectionExpressions
{
  public partial class FormCollectionExpression : Form
  {
    public FormCollectionExpression()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      List<string> items = [ "ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ" ];

      for (int i = 0; i < items.Count; i++) {
        textBox1.Text += items[i] + ", ";
      }
    }
  }
}

解説

stringオブジェクトのListを宣言し初期値をコレクション式で代入しています。
  List<string> items = [ "ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ" ];

従来の記述方式では以下のコードになります。
  List<string> items = new List<string>() { "ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ" };
または
  List<string> items = new (){ "ぺんぎんクッキー", "らくだキャラメル", "しろくまアイス", "かるがもサブレ" };

実行結果

上記のプログラムを実行します。下図のウィンドウが表示されます。


[button1]をクリックします。List<string>オブジェクトにコレクション式で代入した値がテキストボックスに表示されます。

このページのキーワード
  • コレクション式
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2024-01-02
iPentec all rights reserverd.