C#

【C#】Listに要素を追加/挿入する方法とは?

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回は数あるコレクションの中でも、
最もよく使うといっても過言ではない"System.Collections.Generic.List<T>"について、
List<T>オブジェクトに要素を追加する方法を整理し、解説していきます。

まとめて要素を追加したり、任意の場所に挿入したり、実は多くのバリエーションがあるので今回はその[追加/挿入]について見ていきましょう。

C# Listとは?

まずはこのC#におけるList<T>について、簡単に説明します。

IT博士
IT博士

C#には配列と似ている機能のひとつに、「List」と呼ばれる概念があります。このListは配列とは違い、動的に要素の追加や削除ができますよ。

なるほど。動的に追加や削除ができるということは、いろいろなことに使えそうですね!

従来まで使ってきた通常の配列では、使用前にサイズを指定する必要があり、アプリ実行中の状況に応じて必要なサイズが増えたり、減ったりする場合には、 どの程度のサイズを指定しておいたらいいのか困ってしまうことがあります。

あらかじめ指定したサイズが少ないと足りなってしまい、どうすることもできなくなります。
かといって、大きなサイズを指定すると余ってしまった分のメモリが無駄で、場合によってはそのせいでパフォーマンスが低下することもあるんです。
IT博士
IT博士

その点では、動的配列である List を使うことで、アプリ実行中でも必要に応じて配列のサイズを増減させることができるので便利なんです。

でも扱い方とか便利でも、むずかしそうですね。。。

IT博士
IT博士

そうでもないですよ♪
i 番目の要素にアクセスするには [i] で参照できますし、使い方も通常の配列とほとんど同じで、最低限のことだけ覚えれば便利な配列として使えます!

C# Listに要素を追加

なんとなくListについて便利だな。と内容が分かってきたところで早速本題に入ります!

Listへの要素の追加方法は、大きく分けて3通りあります。

  1. 初期化時に要素を与える方法
  2. Addメソッド/AddRangeメソッドを使って末尾に追加する方法
  3. Insertメソッド/InsertRangeメソッドを使って任意の場所に挿入する方法

この3つですね。順番に説明していきますね。

初期化時に要素を与える方法

では、まず最初に初期化の際に要素を与える方法についてみていきましょう。
この方法については、初期化時に与える要素をコレクションを渡してやる方法とそのまま初期値を書く方法の2つをご紹介します。

// コンストラクタに既存のコレクションを与える方法
IEnumerable<string> anotherCollection = ……省略……;
var list1 = new list<string>(anotherCollection);

// 初期化と一緒に初期値を書く方法
var list2 = new List<string>{ "value1", "value2", "value3"};

今回は、staring型(文字列型)を格納しましたが、ここは任意の型にしてくださいね。
このListへの要素の追加方法はシンプルで、配列の時と似ているので問題ないとおもいます。

Add / AddRangeメソッドを使って末尾に追加する方法

ここからが配列ではなく、Listを使うことによるメリットです。
Listオブジェクトに要素を末尾に追加していきます。

// Add/AddRangeメソッドを使う方法
var list = new List<string>();
// 末尾に要素を追加
list.Add("value1");

// 末尾に複数の要素を追加
IEnumerable<string> anotherCollection =……省略……;
list.AddRange(anotherCollection);

こちらも実際にやってみると、とてもシンプルで簡単なことがわかると思います。
Addメソッドは引数で追加する要素を指定するだけで、AddRangeメソッドも複数の要素の入ったコレクション(anotherCollecyion)を引数で指定するだけです。

IT博士
IT博士

AddRangeメソッドを使うことで、Listを要素に持つListを保持することなんかもできますよ♪

Insert / InsertRangeメソッドを使って任意の場所に挿入する方法

最後に、すでにあるListの好きな場所に要素を挿入する方法を見ていきましょう!

// Insert/InsertRangeメソッドを使う方法
var list = new List<string>();

// 先頭に"value1"を挿入
list.Insert(0, "value1");

// 末尾に"value2"を追加
int count = list.Count; // Listの要素数を取得
list.Insert(count, "value2");

// 3番目から複数要素(anotherCollection)を挿入
IEnumerable<string> anotherCollection =……省略……;
list.InsertRange(2, anotherCollection);

このようにInsertメソッドを使うことで、第一引数に挿入する要素目を、第二引数に挿入する値をしていするだけです。

InsertRangeメソッドでは、第一引数に挿入する要素目を、第二引数に挿入するコレクション(anotherCollectin)を指定しています。

まとめ

今回は、"System.Collections.Generic.List<T>"について、List<T>オブジェクトに要素を追加する方法をみていきました。

おさらいすると、追加や挿入する方法は3つ。

  1. 初期化時に要素を与える方法
  2. Addメソッド/AddRangeメソッドを使って末尾に追加する方法
  3. Insertメソッド/InsertRangeメソッドを使って任意の場所に挿入する方法

これは押さえておきましょう!

【結論】未経験でプログラミングの独学はぜんぜん可能

List<T>は使えるととても便利です。今回は追加/挿入しかしていませんが、ほかにもできることはたくさんあるので、またの機会に紹介していきますね!

Listコレクションの要素を削除する方法をまとめた記事があるので良かったら参考にしてみてください。

https://itthestudy.com-list-delete/


最近の投稿

「ワーケーション」とは?環境省が推している理由やメリットを解説

「ワーケーション」とは?2020年7月に、菅官房長官が「ワーケーション」の普及について表明してSNSやニュースで「ワーケーション」が話題になりました。環境省が推進している理由や導入メリット・デメリットを解説します。

レバテックキャリアは未経験でも転職できるのか?リアルな口コミで検証します

IT特化型転職エージェントの「レバテックキャリア 」は未経験でも転職することができるのか?について実際に利用した方のクチコミを元に調査しました。

レバテックキャリアの悪い評判は本当なのか?利用者から聞く実態と噂の真偽

【2020年10月更新】IT系の転職エージェントで有名な「レバテックキャリア」ですが、なぜ悪い評判や悪い口コミが多いのか?その理由について説明します。また、是非登録すべき他の転職エージェントもご紹介していますので、参考にしてみてください。

その会社は大丈夫?知っておきたいブラック企業の特徴

就職先がブラック企業ではないか不安… 転職を考えているけど、ブラックな会社だったらどうしよう… こういった悩みや不安を抱えている方も多くいると思います。 就職や転職をした際に「この会社、ブラックだった ...

【2020年最新保存版】副業と複業の違いやそれぞれの意味について徹底解説!

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今、話題になっている「テレワーク」という働き方を利用して「 ...

Copyright© FUNA BLOG , 2020 All Rights Reserved.