無料プログラミング教室 Pスクール C# スタートブック 第5章: C#のコレクションとジェネリック

第5章: C#のコレクションとジェネリック

C#でのデータ管理と操作のための強力なツールである「コレクション」と「ジェネリック」について学びます。C#は、標準ライブラリに豊富なコレクション型を備えており、データの追加、削除、検索を容易にします。また、ジェネリック型を活用することで、型安全性とパフォーマンスの向上を図ることができます。


5.1 配列(Array)

配列は、同じ型の複数のデータをまとめて管理できる基本的なデータ構造です。配列の特徴は、要素数が固定され、ランダムアクセスが可能である点です。

配列の宣言と初期化

配列は宣言時に要素数を指定し、各要素にデフォルト値(数値型なら0、bool型ならfalse、参照型ならnull)が設定されます。

int[] numbers = new int[5];

配列を初期化しながら宣言することも可能です。

int[] numbers = { 1, 2, 3, 4, 5 };
配列の操作

配列はインデックスを使って要素にアクセスします。例えば、最初の要素にアクセスするには次のようにします。

int firstNumber = numbers[0];
numbers[1] = 10;

配列の長さを取得するには、Lengthプロパティを使用します。

int length = numbers.Length;
多次元配列

C#では、多次元配列もサポートされています。2次元配列の例を示します。

int[,] matrix = new int[2, 3];
matrix[0, 0] = 1;
matrix[1, 2] = 5;

また、Lengthプロパティを使用して全要素数を、GetLength(次元)で特定次元の要素数を取得できます。


5.2 Listコレクション

Listは、配列の要素数の固定に対して、動的に要素数を増減できる柔軟なコレクションです。ジェネリック型List<T>は、要素の型をTとして指定することで、型安全性を確保しています。

Listの宣言と初期化

Listは、List<T>を用いて宣言されます。Tは任意の型を指定でき、要素の型が定義されるため、コンパイル時に型安全性が保証されます。

List<int> numbers = new List<int>();
要素の追加と削除

Listに要素を追加するにはAddメソッドを使用します。Removeメソッドは特定の値を持つ要素を削除し、RemoveAtはインデックス指定で削除します。

numbers.Add(10);
numbers.Add(20);
numbers.Remove(10);
numbers.RemoveAt(0);
要素の検索

Listには、要素の存在を確認するContainsメソッド、要素のインデックスを取得するIndexOfメソッドなどが備わっています。

bool exists = numbers.Contains(20);
int index = numbers.IndexOf(20);
Listの反復処理

foreach文で要素を順に取り出して操作できます。

foreach (int number in numbers)
{
Console.WriteLine(number);
}

5.3 Dictionaryコレクション

Dictionaryは、キーと値のペアでデータを管理するコレクションです。Dictionary<TKey, TValue>としてジェネリック型で提供されており、キーと値の型を指定することで型安全なデータ管理が可能です。

Dictionaryの宣言と初期化

以下のように、キーをstring、値をintに設定して宣言します。

Dictionary<string, int> students = new Dictionary<string, int>();
要素の追加と取得

Addメソッドでキーと値をペアで追加し、キーを指定して値を取得できます。

students.Add("Alice", 85);
int aliceScore = students["Alice"];
要素の削除と確認

キーを指定して削除するRemoveメソッドや、キーの存在を確認するContainsKeyメソッドがあります。

students.Remove("Alice");
bool exists = students.ContainsKey("Bob");
Dictionaryの反復処理

foreachでキーと値を順に取り出せます。

foreach (var student in students)
{
Console.WriteLine($"Name: {student.Key}, Score: {student.Value}");
}

5.4 ジェネリックと型安全性

ジェネリックは、型を指定することで、型安全性を確保しつつ効率的なコレクションを作成するための仕組みです。ジェネリックは特定の型に依存せず、さまざまなデータ型に対応する柔軟なコードを書くために使用されます。List<T>Dictionary<TKey, TValue>など、コレクション型のほとんどがジェネリック型で提供されています。

ジェネリックメソッドの定義

ジェネリックメソッドは、メソッドレベルで型を柔軟にするためのものです。Tを使用して、メソッドで任意の型を受け入れることができます。

public static void Print<T>(T item)
{
Console.WriteLine(item);
}

このメソッドは、任意の型を持つ引数に対応し、Print<int>(100);Print<string>("Hello");のように異なる型で呼び出せます。

ジェネリッククラスの定義

ジェネリッククラスは、データ型に依存しないクラスを作成するためのものです。クラス宣言に型引数を追加して、インスタンス化時に特定の型を指定できます。

public class Box<T>
{
public T Value { get; set; }
public Box(T value)
{
Value = value;
}
}

このクラスは、任意の型のValueプロパティを持ち、Box<int>, Box<string>などでインスタンス化できます。

ジェネリックを使う利点
  • 型安全性の向上: 型チェックがコンパイル時に行われ、不正な型のデータの操作を防ぎます。
  • パフォーマンスの向上: オブジェクトへのボクシングやアンボクシングが不要なため、メモリ効率が向上します。
  • 再利用性の向上: 汎用的なコードを1度書くだけでさまざまな型に対応でき、コードの再利用性が高まります。

以上が、C#のコレクションとジェネリックに関する基礎と実践的な使い方の解説です。コレクションはデータ管理の重要なツールであり、ジェネリック型はC#のコードを型安全で効率的にするために不可欠です。これらの知識を活かして、データを効果的に管理・操作できるようになることを目指しましょう。


初心者におすすめ!プログラミングスクールのススメ

未経験でも気軽に!サブスク型プログラミングスクール【Freeks】

プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。

独学の挫折率、驚きの87.5%!

独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。

有料と無料、スクールの違いは?

プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:

  • 受講条件が異なる
  • 学べるスキルやカリキュラム内容が異なる
  • 就職や転職のサポート内容が異なる

どちらが自分に合っているか、よく考えて選ぶのが大事です。

サブスク型プログラミングスクール『FREEKS(フリークス)』に注目!

プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:

  • 未経験者向けのわかりやすいカリキュラム
  • 経験豊富なエンジニアのサポート
  • オンラインで自分のペースで学習可能

なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。

終了後は副業もサポート!

カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。

独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
 ↓ ↓ こちらをクリック ↓ ↓ 

Related Post

第2章: C#の制御構造第2章: C#の制御構造

制御構造は、プログラムの実行フローを管理するための重要な要素です。制御構造を理解することで、特定の条件に応じて処理を分岐させたり、繰り返し実行したりすることが可能になります。この章では、C#で使用される主要な制御構造につ […]