【C#】リスト(List)型の実装方法【Listの使い方とは?】

C#,プログラミング言語

この記事ではC#におけるListの使い方ついて解説します。

Listはデータをまとめて操作できるデータ構造です。
プログラムで頻繁に利用するデータ構造なので、しっかり理解しましょう。

本記事をご覧頂くと下記内容が理解できます。

この記事で学べること
C#のListの概念と使い方

List使用時の注意点
Listでよく使用する構文とメソッド
・配列とリストの違い
・リストを使うメリット

筆者

疑問点や質問には何でも答えようと思っています。
この記事の不明点はこちらからお問い合わせ下さい

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

C# Listとは?概念と使い方を解説

この章ではListの使い方と概念についてお話しします。

C# Listの概念

Listは指定した型やオブジェクトのデータをまとめて管理する事ができるコレクションです。
コレクションとは配列と同じ、データをまとめて扱う仕組みのこと

C# Listのイメージ

上記がListのイメージです。
データをまとめてコピーしたり、まとめて削除したり、まとめてDBに突っ込んだり。

同じ型のデータを1つの変数に定義することで、同時処理が可能になります。

使用例
・バンドメンバーの名前を1つのリストにまとめたい。
・購入した商品を1つのリストにまとめたい。
・データベースのテーブルのカラムをまとめたい。

など、データをまとめて処理したい時に用いられます。

Listの詳しい概念はこちらを参照してください。

C# Listの使い方

Listを用いたプログラムを見ていきましょう。

// リストの初期化
List<string> membersList = new List<string>();
membersList.Add("Sato");
membersList.Add("Suzuki");
membersList.Add("Sato");
membersList.Add("Takai");
membersList.Add("Ikeda");

// リストのコピー
List<string> copyList = new List<string>(membersList);

// リストの削除
membersList.Clear();

上のプログラム例のように、
List<データ型> 変数名 = new List<データ型>();
と記載し、List型の変数を宣言します。

ここでは、「List<string> membersList = new List<string>();」と書くことで
string型(文字列)の値をListで1つにまとめています。

string型文字列をAddメソッドで追加する

値を設定したいときは「リスト変数名.Add(追加したい値)」で値を追加することができます

値を設定したリストは、リストごとコピーしたり、削除(.Clear())したりすることができ、応用範囲が広いです。
※詳しくはこちら

C# 配列とListの違い

配列とリストは「データをまとめて扱える」という点で似たデータ構造ですが、多少差異があります。

リストと配列の違い
■配列
固定長データである。
多次元配列が使用できる。
要素の追加・削除ができない。

■リスト
可変長データである。
1次元リストしか作成できない。
要素を追加・変更・削除することができる。

配列とリストの一番大きな違いが配列が固定長データリストが可変長データである」ということです。

配列は固定長データ

配列は、固定長データのため、データへのアクセスが早いです。
しかしその分、要素の追加や削除ができません。

Listは固定長データ。

一方リストは、可変長データのため、データへのアクセスが遅いです。
しかしその分、途中で要素の追加や削除が可能です。

配列とリストはこのような相違なる特徴を持ちます。
使用場面、用途に応じて適切な方を使うようにしましょう。

配列の詳しい使い方はこちらをご確認ください。
⇒C#配列型の実装方法と概念を詳しく解説

C# Listのメリット

Listのメリットを以下に記します。

Listのメリット
・自由に要素を追加・削除できる。(データの自由度が高い)
・データの挿入・削除の処理速度が高速。(データのアクセス速度は遅い)

・プログラムが冗長になるのを防ぐ
・タイプセーフ(データ型の食い違いによって起こるエラーを防ぐ)

C# Listを用いたプログラムの実装

実際にプログラムを動作させ、リストの処理を確認してみましょう。
皆さんもプログラムを実行させてください。

プロジェクトの作成方法はこちら(左記サイトの①プロジェクトの作成をご確認ください) 

C# Listを使ったプログラムの実装

C# Listを使ったプログラム

プログラムのコピペは下記から

using System;
using System.Collections.Generic;

namespace LecturerBeginner
{
    class Program
    {
        static void Main(string[] args)
        {

            // ①リストの初期化
            List<string> membersList = new List<string>();
            membersList.Add("Sato");
            membersList.Add("Suzuki");
            membersList.Add("Takagi");

            // ②メンバーの名前を一人ずつ表示する
            Console.WriteLine("初期メンバー");
            foreach (string member in membersList)
            {
                Console.WriteLine(member);
            }

            // ③メンバーの追加と削除を行う
            membersList.Insert(1, "石田");
            membersList.Remove("Takagi");
            Console.WriteLine("\n現在のメンバー");
            foreach (string member in membersList)
            {
                Console.WriteLine(member);
            }
        }
    }
}

上記のプログラムを実行すると下記の結果が得られます。

C# Listを使ったプログラムの実行結果

※プログラムの実行方法はこちら(左記サイトの③プロジェクトの実行をご確認ください)

C# Listを用いたプログラムの解説

この項では「C# Listを用いたプログラムの実装」で紹介したプログラムの解説をします。

リストの初期化

// ①リストの初期化
List<string> membersList = new List<string>();
membersList.Add("Sato");
membersList.Add("Suzuki");
membersList.Add("Takagi");

List<string> membersList = new List<string>();
でstring型データを格納するmemberList変数を宣言しています。
データの初期値に「Sato」「Suzuki」「Takagi」の文字列をリストに追加しています。

リストのメンバーの名前を一人ずつ表示する

// ②メンバーの名前を一人ずつ表示する
Console.WriteLine("初期メンバー");
foreach (string member in membersList)
{
    Console.WriteLine(member);
}

上記プログラムでは、membersListに格納された名前を一行ずつ表示しています。

リストのメンバー全員の名前を表示するためにforeach文を使用。
foreach文は配列やリストなどのコレクションの全ての要素を1つずつ取り出し、処理することができます。

上記のコードでは、membersListに格納された文字列を1つずつmemberに代入し、画面に表示しています。

「②リストのメンバーの名前を一人ずつ表示する」実行結果

リストのメンバーの追加と削除を行う

// ③メンバーの追加と削除を行う
membersList.Insert(1, "石田");
membersList.Remove("Takagi");
Console.WriteLine("\n現在のメンバー");
foreach (string member in membersList)
{
    Console.WriteLine(member);
}

上記のプログラムではmemberListのメンバーの追加と削除を行っています。

・追加処理・・・membersList.Insert(1, “石田");
「リスト変数.Insert(追加する位置,要素の値);」と記載することで、リストに新しいデータを追加できます。

・削除処理・・・membersList.Remove(“Takagi");
「リスト変数.Remove(削除する要素の値);」と記載することで、リストの要素を削除できます。

「③リストのメンバーの追加と削除を行う」実行結果

C# リストを使用した課題にチャレンジ

Listの処理をさらに理解するために課題にチャレンジしてみましょう。

(1)1~10までの整数をListに格納する

for文を使用して、1~10までの整数をリストに格納してください。

正解は下記の通りです。

List<int> numberList = new List<int>();
for (int i = 1; i < 11;i++ )
{
    numberList.Add(i);
}

(2)課題1で作成したリストを表示させる

先ほど格納したリストの整数を全て表示させてください。

foreach (int number in numberList)
{
    Console.WriteLine(number);
}
C# リストの課題2 実行結果

Listの使い方まとめ

以上がC#におけるListの使い方でした。
まとめると

Listとは
・データをまとめて管理できる仕組み。
・AddやInsert、Removeなどのメソッドでデータを操作できる。
・可変長データで、要素を追加したり削除したりすることができる。
・配列が固定長データ。リストが可変長データ。

プログラミングにおいて頻繁に実装するデータ構造になるので理解しておきましょう。

以上です。お疲れさまでした。

筆者

C#プログラミング始めやすいように下記にC#を学ぶための完全ガイドを作成しています。
気軽にC#の勉強を始めてみてください!!

C#プログラミングを学んでみたい方向けの完全ガイドを下記に掲載します。
⇒C#初心者向けプログラミング完全ガイド

お時間ある方はカリキュラムを学んでみましょう

はじめに

  1. C#プログラミング初心者完全ガイドの説明
  2. 【解説】プログラミングとは?そもそも、プログラミングって何?
  3. C#とは?
  4. 【Windows】Visual Studioのインストールと初期設定までご紹介

初級編

  1. 【Visual Studio】プロジェクト/ソリューションの作り方とその違い
  2. 【C#】console.writeで画面上に文字を表示する【writeの使い方とよくあるエラー】
  3. 【C#】変数を使って計算してみよう!【int/doubleの使い方とよくあるエラー】
  4. 【C#】String文字列の使い方【replace/substring/Length】
  5. 【C#】配列型を実装してみよう!【int[]の初期化と使い方】
  6. 【C#】if文を使って分岐処理を実装しよう!【if()の使い方とよくあるエラー】
  7. 【C#】case文を使って分岐処理を実装しよう!【caseの使い方とよくあるエラー】
  8. 【C#】for文でループ/くり返し処理を実装する【forの使い方とよくあるエラー】
  9. 【Visual Studio】ビルドとデバックのやり方/注意点
  10. 【C#】リスト(List)型の初期化方法!【Listの使い方とよくあるエラー】
  11. 【C#】メソッド(関数)を使ってみよう!【関数の使い方とよくあるエラー】
  12. 【C#】クラスとインスタンスを使いこなす【クラスの使い方とよくあるエラー】

知っておくと便利

  1. 【Visual Studio】おすすめのショートカットキーで業務効率化
  2. 【C#】break/continue文の実装方法【breakの使い方とよくあるエラー】
  3. 【C#】アクセス修飾子(publilc/private)の使い方【publicの使い方とよくあるエラー】

中級編

  1. 【C#】Windows Formでアプリ画面を作成しよう【WindosFormの使い方】
  2. 【C#】アプリ画面の名前を変更しよう【Formのプロパティ設定方法】
  3. 【C#】ラベルの設定方法をご紹介【labelの使い方】
  4. 【C#】ラベルの設定方法をご紹介【labelの使い方】
  5. 【C#】画面にボタンを追加してみよう【Buttonの使い方】
  6. 【C#】画面にボタンのメソッドを実装しよう①【Buttonの使い方と注意点】
  7. 【C#】画面にボタンのメソッドを実装しよう②【Buttonの使い方と注意点】

上級編(やらなくてもOK)

  1. 随時更新予定

プログラミングで挫折しかけている方へ

おすすめのC#教材(補助教材として)

C#,プログラミング言語

Posted by 9noike