業務のためのC#・C言語・C++学習

主にC#の文法やWPF周りのアウトプットに利用してます。

【C#-文法】2次元Listの値追加と出力

はじめに

List多次元配列の値追加と出力について解説します。
ここでは例として2次元Listを採用しています。
Listではなく配列型の多次元配列は以下を参照

gaishiengineer.hatenablog.com

前提知識

Listの基本操作 gaishiengineer.hatenablog.com 使用するのは、AddメソッドとCountプロパティです。 Addメソッド

〇〇.Add(T item);//末尾に要素itemを追加

Countプロパティ

〇〇.Count;//末尾に要素数を取得 returnされる値はint

2次元リストの型

Tは任意の要素つまりstringやintなど

List<List<T>> dataList = new List<List<T>>();

例:2次元リストの宣言と共に初期化し、格納された値を出力する

メリット:すでに追加したい値が決まっている場合初期化が楽になる

//値を追加するために2次元配列List
            var dataList = new List<List<string>>(){
           new List<string>() {"1-A","1-B","1-C","1-D"},  // 1行目のList
           new List<string>() {"2-A","2-B","2-C","2-D","2-E"},     // 2行目のList
          }
//値の出力
            for (int i = 0; i < dataList.Count; i++)
            {
                for (int j = 0; j < dataList[i].Count; j++)
                {
                    Console.WriteLine(dataList[i][j]);
                }
            }

//出力結果

1-A
1-B
1-C
1-D
2-A
2-B
2-C
2-D
2-E

例:初期化をせずに2次元リストに値を追加し出力する

メリット:追加したい値が定まってなかったり他のクラスから値を持ってくる場合に有用である。

ここではひとまず追加したい値を同じクラス内で作成しAddで2次元リストに追加する。

//2次元リストListの宣言
List<List<string>> dataList = new List<List<string>>();

//2つの1次元配列 Excelを想定し値は"行-列"を意味する
List<string> values_1 = new List<string>{"1-A","1-B","1-C","1-D"};
List<string> values_2 = new List<string>{ "2-A","2-B","2-C","2-D","2-E" };

//2次元配列List=dataListに1次元配列values_1を追加する
dataList.Add(values_1);

//値の出力
for (int i = 0; i < dataList.Count; i++)
{
 for (int j = 0; j < dataList[i].Count; j++)
 {
  Console.WriteLine(dataList[i][j]);
 }
}
Console.WriteLine("------------");

//dataListにもう片方の1次元配列values_2追加する
dataList.Add(values_2);

//全ての値の出力
for (int i = 0; i < dataList.Count; i++)
{
 for (int j = 0; j < dataList[i].Count; j++)
 {
  Console.WriteLine(dataList[i][j]);
 }
}

出力結果

解説

■2次元配列Listの宣言

List<List> dataList = new List<List>();

Listの要素型には、任意の型が指定可能。List<List>はリストListを要素に持つリストつまり2次元リストを意味しています。 *注意点 リストのリストは行列というよりすべてオブジェクト。結果的に二次元に見えるがプログラムは一次元でしか並べることができない

■値の追加

値の追加はAddメソッドを用いる。

■値の出力

多次元配列の出力はforeachとforの二つがあるがここではExcel使用を考えて要素の指定が可能なforを用いる。 要素数の取得はCountを用いる

3次元以上のList

入れ子を増やす

var dataList = new List<List<List<T>>>();

参考文献

https://smdn.jp/programming/dotnet-samplecodes/collections/3a735f8a024111eb907175842ffbe222/