今回はC#を学び始めて、
「Listって何?」「どう使うの?」
という方向けに、Listの簡単な解説と使い方をご紹介します。
Listの使い方
Listとは?
配列に似たもので、同じデータ型の値をまとめて取り扱うためのもの(クラス)です。
特徴:配列と違い、簡単に要素の追加・削除ができるメソッドがあるので、後から要素を増やしたり減らしたい時に便利です。他に、ソートや検索などもすることができます。
便利な一方、配列と異なりListは一次元しか作れないので、
配列:後から要素を追加しなくていいとき or 多次元にしたいとき
List:後から要素を追加、削除、並べ替えなどをしたいとき
と使い分けると良いでしょう。
ここではListの基本的な使い方と、Listの要素の追加、削除の方法を簡単に解説します。
Listを使うには
Listを使用するときはプログラムの初めに以下を記述します。
using System;
using System.Collections.Generic;
宣言、初期化
このように宣言、初期化します。
List<データ型>変数名 = new List<データ型>();
またはvar(型推論)を使って
var 変数名 = new List<データ型>();
と書くこともできます。
Listはクラスなのでnewを使ってインスタンスを作成します。
データ型にはint, string, float, double, 自作クラスなど色々な型を指定できます。
例1
// int型のリストを生成
List<int> intList = new List<int>();
// string型のリストを生成
var stringList = new List<string>();
例2
// varを使ってint型のリストを生成
var intList = new List<int>();
例3
List要素の初期値を設定することもできます。
// インスタンス生成と同時に初期値を設定
var intList = new List<int>(){1, 2, 3};
Listの要素のインデックスについて
配列と同じで、要素のインデックスは0から始まるので注意しましょう。
上の例なら、intList[0]の要素は1、intList[1]の要素は2、intList[2]の要素は3になります。
Listの要素の取得、更新
要素の取得
Listの要素の取得は次のように行います。
要素を1つだけ取得する場合
// リストの宣言、要素の初期値設定
var intList = new List<int>()
{
1, 2, 3
};
// リストの0番目の要素を取得してnumberに代入
int number = intList[0];
// numberを出力
// ※Unityの場合はDebug.WriteLineの代わりにDebug.Logを使いましょう
Debug.WriteLine(number); // 1が出力される
要素を全て取得する場合
要素を全て取得するときは、for文、foreach文、LINQを使って取得できます。
// リストの宣言
var intList = new List<int>()
{
1, 2, 3
};
// for文でListの全要素を取得
for (int i = 0; i < intList.Count; i++)
{
Debug.WriteLine(intList[i]); // 1 2 3が出力される
}
// foreach文でListの全要素を取得
foreach (var number in intList)
{
Debug.WriteLine(number); // 1 2 3が出力される
}
// LINQを使ってListの全要素を取得
intList.ForEach(x => Debug.WriteLine(x)); // 1 2 3が出力される
要素の更新
Listの要素を更新するには、要素のインデックスを指定して代入します。
// リストの宣言
var intList = new List<int>()
{
1, 2, 3
};
// リストの0番目の要素を「4」に更新する
intList[0] = 4;
// Listの全要素を取得
for(int i = 0; i < intList.Count; i++)
{
Debug.WriteLine(intList[i]); // 4 2 3が出力される
}
Listの要素数を取得する
Listの要素数を取得するにはCountメソッドを使います。
// リストの宣言
var intList = new List<int>()
{
1, 2, 3, 4, 5
};
// 要素数を取得
int intListCount = intList.Count();
// 要素数を出力
Debug.WriteLine(intListCount); // 5が出力される
Listの要素の追加/削除(Add/Remove)
要素を追加する
Listに要素を追加するにはAddメソッドを使います。
// リストの宣言
var intList = new List<int>()
{
1, 2, 3
};
// 要素の追加
// Listの末尾に要素が追加される
intList.Add(4); // Listの3番目の要素に4が追加される
// Listの全要素を出力
for (int i = 0; i < intList.Count; i++)
{
Debug.WriteLine(intList[i]); // 1 2 3 4が出力される
}
要素を削除する
Listの要素を削除するにはRemoveメソッドを使います。
同じ要素が複数ある場合、最初に一致した要素を削除します。
// リストの宣言
var intList = new List<int>()
{
1, 2, 3, 1
};
// 要素の削除
// 最初の1だけが削除される
intList.Remove(1);
// 全要素を出力
for(int i = 0; i < intList.Count; i++)
{
Debug.WriteLine(intList[i]); // 2 3 1が出力される
}
要素を全削除する
Listの要素を全て削除するにはClearメソッドを使います。
// リストの宣言
var intList = new List<int>()
{
1, 2, 3, 1
};
// 要素の全削除
intList.Clear();
// 要素数を出力
Debug.WriteLine(intList.Count); // 要素が全部削除されたので0が出力される
その他できること
Listには他にも、
- 要素の挿入
- 要素のソート(並べ替え)
- 要素の検索
- 別の型へ変換
- 配列に変換
- 要素のインデックスの取得
- 要素に値が含まれるか判定
などができます。
おすすめ書籍
C#を学びたい初心者の方におすすめの書籍をご紹介します。実際に私が購入して良かった本です。
C#の絵本
「いちばんやさしいC#の入門書」と帯にありましたが、とてもわかりやすくC#の全体をざっくり学べる本です。
絵本という通り、イラストで解説してくれているので、オブジェクト指向などイメージしにくい概念も理解しやすくなっています。
プログラミング初心者の私でも読みやすい本でした!
確かな力が身につくC#「超」入門
もう少ししっかり学びたい方にはこちらの本がおすすめです。
C#プログラムの書き方の基本からオブジェクト指向まで、やさしい文章とたくさんのイラストで丁寧に解説されています。
プロジェクトの新規作成からスクリーンショット付きでわかりやすく説明されていて、Windowsアプリケーション作成や練習問題を通してC#の基本を身につけることができます。
Unity本のベストセラー、「Unityの教科書」と同じ著者の本で、どちらも大変わかりやすいです。
ゲームをイメージしたプログラミング例もあるので
ゲーム制作をしたい方にもおすすめです
おすすめUnity本「Unityの教科書」はこちらから
まとめ
以上、Listの基本的な使い方についてでした。
Listは使えるととても便利なので、学習のきっかけになれば幸いです!