読者です 読者をやめる 読者になる 読者になる

C#_複数のデータを一つの変数に格納したい (複合型)

例えば、出席番号・名前・性別 を変数に格納したい。
データの形としては
[0]には、No → 001、Name → 赤坂、Sex → M
[1]には、No → 002、Name → 伊藤、Sex → F
というような感じに。

PHPでいうならば、以下の様に。

Array
(
    [0] => Array
        (
            [No] => 001
            [Name] => 赤坂
            [Sex] => M
        )

    [1] => Array
        (
            [No] => 002
            [Name] => 伊藤
            [Sex] => F
        )
)

 

ではC# でどのように書くのかというと、構造体を使う。

//型を定義 (hoge型を定義)
public struct hoge{
    public int No;
    public string Name;
    public string Sex;
}

//データを格納する変数
private List<hoge> hL_ = new List<hoge>();

private void test()
{
    //Add でリストに複数のデータを格納
    hL_.Add(new hoge { No=1, Name="赤坂", Sex="M"});
    hL_.Add(new hoge { No =2, Name = "伊藤", Sex="F"});

    //ListをLogに出力
    foreach (var d in hL_)
    {
        string no = d.No.ToString("D3") + Environment.NewLine;
        string name = d.Name.ToString() + Environment.NewLine;
        string sex = d.Sex.ToString() + Environment.NewLine + Environment.NewLine;

        File.AppendAllText(@"C:\Users\log.txt", no + name + sex);
    }
}

 

出力結果は

001
赤坂
M

002
伊藤
F

 

格納するだけならば、ソースの foreach から以下は不要。
ToString("D3") は 3 桁固定 の 0埋めにする。(int 型から 文字列型変換の際に0埋め)

 

下記から参考。
http://www.itlab51.com/?p=4723
http://ufcpp.net/study/csharp/st_struct.html

 

以上。

【疑問Memo】
複数のデータを一つにするには struct を使う。
struct は ユーザ定義型といって、プログラマが自由に作ることができる型。
ユーザ定義型には、struct の他に interface や class があるが、
 何故 struct を使用する?struct って何だ?

ジェネリックコネクション型である List で作ったが、
ジェネリックコネクション型って何ってなんだっけ?
(型なんでもOK的なイメージしかない)

List って配列の可動バージョンと思っていたが理解不足感がある。
つまりList ってなにさ?