クラスのインスタンスをListにする

サンプルをみてください。

class People
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        People people1 = new People();
        people1.Name = "田中";
        people1.Age = 35;

        People people2 = new People();
        people1.Name = "山田";
        people1.Age = 20;

        Console.WriteLine(people1.Name);
    }
}

2人のインスタンス(模擬人間)を作りました。
people1変数とpeople2変数です。この変数は、People型で参照型になります。

people1の名前を知りたいとき、インスタンス名.メンバー変数名でアクセスするとそのデータを取り出すことができます。言葉で言い換えると、「people1の名前」になります。

people1.Name

データとして管理する

今は2人ですが、これが20人、200人、2000人とどんどん増えれば扱いが大変になってきます。ここで、配列やListの登場です。

例えば、int型のListの場合、

List<int> numbers = new List<int>();
numbers.Add(20);
numbers.Add(10);

というようにデータを増やしていくことでができます。

<>の中には、型が記述されています。
これを使って、Peopleを管理してみます。

上記のコードを変化させて、

List<People> peoples = new List<People>();

とします。

次にListに追加します。

List<People> peoples = new List<People>();
peoples.Add(people1);
peoples.Add(people2);

読みだすには、次のようにします。

string name = peoples[0].Name;
Console.WriteLine(name);

インライン(1行にまとめる)と、

Console.WriteLine(peoples[0].Name);

でもいいです。(同じ処理)

最終的なコードサンプル

  • 初期値をコンストラクタで代入
  • Listの初期値代入省略
  • 暗黙の型宣言(var)を適用
  • 全てのListデータの表示
class People
{
    public string Name { get; set; }
    public int Age { get; set; }

    public People(string name, int age)
    {
        Name = name;
        Age = age;
    }
}
class Program
{
    static void Main(string[] args)
    {
        var people1 = new People("田中", 35);
        var people2 = new People("山田", 20);

        var peoples = new List<People>
        {
            people1,
            people2
        };

        foreach (var people in peoples)
        {
            Console.WriteLine(people.Name);
        }
    }
}

C#

Posted by hidepon