C#を始めよう|クラスをListクラスとして使う

C#を始めよう|クラスをListクラスとして使う

C#

データの一時保存等に便利なListクラスってものがあるのですが、レコードレイアウト的な他クラスをListクラスにして使ってみた。

ベースのクラス

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

Customerクラスを作りました。
int型のId、string型のNameプロパティがあります。
これを顧客マスターのレコードレイアウトとして仮定しました。

クラスをListクラスとしてインスタンス化

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Customer> CustomerLIst = new List<Customer>();     //  CustomerクラスをListとしてインスタンス

        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

List<Customer>でインスタンス化することで使用可能になります。

Listをクリア

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Customer> CustomerLIst = new List<Customer>();     //  CustomerクラスをListとしてインスタンス

            CustomerLIst.Clear();   //  リストの全要素をクリアー
        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

CustomerLIst.Clear()で要素をクリアできます。

Listの末尾にデータを追加

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Customer> CustomerLIst = new List<Customer>();     //  CustomerクラスをListとしてインスタンス

            CustomerLIst.Clear();   //  リストの全要素をクリアー

            //  末尾に要素を追加
            CustomerLIst.Add(new Customer { Id = 10, Name = "東京 一郎" });
            CustomerLIst.Add(new Customer { Id = 20, Name = "神奈川 二郎" });
            CustomerLIst.Add(new Customer { Id = 30, Name = "千葉 三郎" });
        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

AddメソッドでListの最終行にデータを追加できます。

本当にデータが入っているのか確認してみます。

CountプロパティでListの行数を取得

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Customer> CustomerLIst = new List<Customer>();     //  CustomerクラスをListとしてインスタンス

            CustomerLIst.Clear();   //  リストの全要素をクリアー

            //  末尾に要素を追加
            CustomerLIst.Add(new Customer { Id = 10, Name = "東京 一郎" });
            CustomerLIst.Add(new Customer { Id = 20, Name = "神奈川 二郎" });
            CustomerLIst.Add(new Customer { Id = 30, Name = "千葉 三郎" });

            //  Listの全行をコンソール表示
            for (int i = 0; i < CustomerLIst.Count; i++)
            {
                Console.WriteLine("ID={0} NAME={1}", CustomerLIst[i].Id, CustomerLIst[i].Name);
            }

            Console.ReadLine();
        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

for文を使ってListに保存した全データを表示しています。
見ての通りCountプロパティにはListに保存されている行数を把握できます。

Listの指定した行にデータを追加

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Customer> CustomerLIst = new List<Customer>();     //  CustomerクラスをListとしてインスタンス

            CustomerLIst.Clear();   //  リストの全要素をクリアー

            //  末尾に要素を追加
            CustomerLIst.Add(new Customer { Id = 10, Name = "東京 一郎" });
            CustomerLIst.Add(new Customer { Id = 20, Name = "神奈川 二郎" });
            CustomerLIst.Add(new Customer { Id = 30, Name = "千葉 三郎" });

            //  リストの場所を指定して要素を追加(挿入)
            CustomerLIst.Insert(1, new Customer { Id = 15, Name = "埼玉 四郎" });

            //  Listの全行をコンソール表示
            for (int i = 0; i < CustomerLIst.Count; i++)
            {
                Console.WriteLine("ID={0} NAME={1}", CustomerLIst[i].Id, CustomerLIst[i].Name);
            }

            Console.ReadLine();
        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

Insertメソッドで指定行にデータを追加できます。
指定行は0から始まりまり、今回は0行目と1行目の間にデータを追加しています。

実行するとコンソール表示で確認できると思います。

Listの指定行を削除

using System;
using System.Collections.Generic;

namespace List
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Customer> CustomerLIst = new List<Customer>();     //  CustomerクラスをListとしてインスタンス

            CustomerLIst.Clear();   //  リストの全要素をクリアー

            //  末尾に要素を追加
            CustomerLIst.Add(new Customer { Id = 10, Name = "東京 一郎" });
            CustomerLIst.Add(new Customer { Id = 20, Name = "神奈川 二郎" });
            CustomerLIst.Add(new Customer { Id = 30, Name = "千葉 三郎" });

            //  リストの場所を指定して要素を追加(挿入)
            CustomerLIst.Insert(1, new Customer { Id = 15, Name = "埼玉 四郎" });

            //  インデックスを指定して要素を削除
            CustomerLIst.RemoveAt(1);

            //  Listの全行をコンソール表示
            for (int i = 0; i < CustomerLIst.Count; i++)
            {
                Console.WriteLine("ID={0} NAME={1}", CustomerLIst[i].Id, CustomerLIst[i].Name);
            }

            Console.ReadLine();
        }
    }
    //  顧客マスターレイアウト
    class Customer
    {
        public int      Id      { get; set; }
        public string   Name    { get; set; }
    }
}

RemoveAtでListの指定行を削除できます。
先程、追加した1行目を削除しています。
行は先頭行が0行目として数えます。

実行するとコンソール表示で1行削除できているのが確認できます。

最後に!!

Listクラスの使い方一部だけを書きましたがなかなか効果的に使えそうです。
他にも沢山機能があるので調べてみて下さい。

特定の値を持つ行を検索できるIndexOfメソッド用意されているのですが、今回のような使い方では機能しませんでした。
for文等で対応する必要があるようです。
何故IndexOfが機能しないのかは分かりませんでした。

コメント

タイトルとURLをコピーしました