配列あれこれ(C#)

今回は、プログラムの基本の配列について、いくつかサンプルを作成してみました。(言語は、c#を想定しています。)

[1] 最初のパターンは、文字列の配列宣言と同時にデータもセットする方法です。(宣言と同時に配列数が決まります。)

// ■ 
// ■
// ■ パターン①
// 文字列配列、宣言&初期化
string[] sArry = new string[] { "Jan", "Feb", "Mar", "Apr",
        "May" ,"Jun", "Jul","Aug","Sep","Oct","Nov","Dec"};
// 配列のループ(foreachを使った方法)
foreach (string str in sArry)
{   // 出力
    Debug.WriteLine(str);
}
 [2] 次のパターンは、配列を宣言してから、追加してゆく方法です。こちらも基本的に配列数が最初に決まっていますが、後から増減させることは可能です。
 
// ■ 
// ■
// ■ パターン②
string[] sArry2 = new string[12];
sArry2[0] = "Jan";
sArry2[1] = "Feb";
sArry2[2] = "Mar";
sArry2[3] = "Apr";
sArry2[4] = "May";
sArry2[5] = "Jun";
sArry2[6] = "Jul";
sArry2[7] = "Aug";
sArry2[8] = "Sep";
sArry2[9] = "Oct";
sArry2[10] = "Nov";
sArry2[11] = "Dec";
// 配列のループ(forを使った方法)
for (int i = 0; i < 12; i++)
{   // 出力
    Debug.WriteLine(sArry2[i]);
}

[3] 3つ目のパターンは、List<> を使用した方法です。この方法が汎用性が高く、<string>の中には、string(文字列)だけでなく、個別にclassで宣言した型(構造体)を指定できるので、配列をデータテーブルのように使うことができます。

業務系アプリで、データを扱う場合は必須な方法かと思います。

// ■ 
// ■
// ■ パターン③
List sList<string> = new List<string>();
sList.Add("Jan");
sList.Add("Feb");
sList.Add("Mar");
sList.Add("Apr");
sList.Add("May");
sList.Add("Jun");
sList.Add("Jul");
sList.Add("Aug");
sList.Add("Sep");
sList.Add("Oct");
sList.Add("Nov");
sList.Add("Dec");
// 配列のループ(foreachを使った方法)
foreach (string str in sArry)
{   // 出力
    Debug.WriteLine(str);
}

[4] 最後のパターンは、System.Data.DataTable を使った方法です。業務系のアプリの場合は、必須かと思います。

名前の通りにメモリー上にテーブルを作成して使用します。型宣言が面倒に思われるかと思いますが、データベースとのやり取りがあるシステムなら、親和性が高くデータのやり取りがとてもスムーズにできます。

// ■
// ■
// ■ パターン④
DataTable dt = new DataTable();
dt.Columns.Add("No", typeof(int));      // 列(項目)を追加
dt.Columns.Add("月",typeof(string));    // 列(項目)を追加
for (int i = 0; i < 12; i++)
{   // データセット
    DataRow row = dt.NewRow();  // テーブルの新しい行宣言
    row["No"] = i;
    row["月"] = i.ToString("D2") + "月";  // 行の項目に値セット
    // テーブルに行を追加
    dt.Rows.Add(row);
}
// 配列のループ(foreachを使った方法)
foreach (DataRow data in dt.Rows)
{   // 出力
    Debug.WriteLine(
        data["No"].ToString(),
        data["月"].ToString()
        );
}