C#配列とは?宣言や初期化の方法など基礎をわかりやすく紹介

C#を使ったプログラミングに取り組んでいるものの、

・配列がどのようなものか分からない…。
・配列の使い方が知りたい…。

という方も多いのではないでしょうか。そこでこの記事では、

・C#で配列の宣言や初期化を行う方法
・C#における配列のソート方法

などについて解説します。
初心者の方でも、この記事を読めば、C#で配列を扱うための基礎知識が身に付きます。

C#の配列とは?

配列の意味はプログラミング言語によって、若干意味合いが違ってきますが、C#においての配列とは、「複数のデータを格納・取り出しができるもの複数のデータの集合」と考えると良いでしょう。

例えば、社員10人の年齢をプログラミングで扱うケースを考えてみます。この場合、配列を使用しないと、次のようなコード10個の変数を宣言する必要があります。

一方、配列を使用すれば次のコード例のように1つの配列を宣言するだけで、そこに10人分の年齢を格納できます。

このように、コードを大幅に省略できることや、ミスがあった場合にも簡単に修正できることが配列を使うメリットです。以下の章から、配列の具体的な使い方について説明していきます。

 

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

C#で配列の宣言を行う方法

C# において配列は、宣言しないと使えません。
そして宣言は、格納できる要素の型を使って表現されています。

例えば、int型のデータを格納する配列を作成するならば、

と宣言します。
これで、int型の要素を10個格納できる配列array1が使えるようになります。

同様に

と書くとdouble型の要素3個格納できるarray2やobject型の要素5個格納できるarray3ができます。

C#で宣言した配列の要素に値を代入する方法

単に配列を宣言しただけでは、配列の各要素に何の値も入っていない状態です。宣言した配列に何らかのデータを格納したいときは、次のようなコードで代入を行います。

配列を表す変数の後に“[添字]“としたものに代入する形で、配列にデータを格納することが可能です。上記のコード例では、「array4」という配列の0番目の要素として「3」、1番目の要素に「5」、2番目の要素に「7」を代入しています。

また、配列に格納されたデータを取り出して使うコード例は次の通りです。

データを代入するときの同様に、配列名に添字を付けて指定することで、格納されているデータを使用できます。上記のコード例では、「array5」という配列の1番目に格納されたデータを、「data」という変数に代入できました。

多次元配列

C#には、多次元配列と呼ばれる機能があります。前述のコード例で解説した配列は、複数のデータが一列に並んだような形で格納される「一次元配列」です。

一方、多次元配列では、行と列をもった表のような形でデータを格納できます。例えば、行と列をもつ多次元配列を宣言するコードは次の通りです。

このコード例では、行と列という2つの次元をもつ「matrix」という多次元配列が宣言されています。

また、多次元配列を宣言すると同時に、格納するデータを明示的に指定するコード例は次の通りです。

このように記述すると、「matrix」を3つの行と3つの列を持った多次元配列として作成できます。

多次元配列からデータを取り出したいときは、一次元配列と同様に配列名に添字を付けましょう。

このコード例では、「element1」に1、「element2」に6が格納されます。

 

C#で配列の初期化をする方法

配列の初期化とは、宣言した配列に具体的な値を指定して、プログラム上で使えるようにすることです。次のコード例のように、配列を宣言した上で各要素に値を代入すると初期化ができます。

より短いコードで配列を初期化したい場合、次のような書き方もできます。

また、代入する値を指定した時点で要素数は決まるため、[3]という部分は省略することも可能です。

さらに、「new int[]」の部分を省略し、次のようなコードでも初期化ができます。

それぞれすべて同じ内容を指しているため、分かりやすさや好みで、使う記述方法を決めてください。

 

C#の配列の要素数を取得する方法

C#の配列にいくつの要素があるかを取得したい場合には、「Array.Length」という機能を使います。

C#の配列は「Array」というクラスを基底クラスとして継承しているため、Arrayクラスが持つデータの情報である「プロパティ」や、操作を行う「メソッド」の利用が可能です。

例えば、Arrayクラスには下記のプロパティやメソッドがあります。

  • プロパティ

Length:配列の全ての要素数
Rank:配列の次元

  • メソッド

Sort:配列を小さい順に並べる
Reverse:配列を大きい順に並べる
Clear:配列を0で初期化する

Arryクラスの説明は以下のマイクロソフトのドキュメント(英語表記)で調べていただくのがいいでしょう。

今回は、要素数を調べるので、Array.Lengthを使います。

Array.Lengthは全ての要素数を返すプロパティです。for文で配列を処理するときの最大値にも使用できます。

例えば、「array」という配列の要素数を取得するコードは次の通りです。

Lengthプロパティは、配列の要素の総数を出力します。
ここでは、int型の要素数100の配列を宣言していますので、nには100が入ります。

 

C#配列の要素を、繰り返し構文(foreach文)を使って処理する方法

C#で配列の要素一つ一つに対して処理をしていきたいというときは、次のコード例のように「foreach文」を使うことが一般的です。

上記コードでは、配列「array」の各要素が「element」という変数として参照され、System.Console.WriteLine()でコンソールに出力されます。

C#の繰り返し構文にはfor文もありますが、配列を繰り返し処理するという部分においてメリットはないため、foreach文の使用がおすすめです。

 

C#配列のソート方法

最後に、配列に格納された要素の順番を変更する「ソート」について解説します。

Array.Sortを用いた配列のソート

「Array.Sort」を使ってソートを行うコード例は次の通りです。

このように、配列「array」をArray.Sortに引数として渡すだけで、中のデータが小さい順にソートされます。
※引数:関数に渡す値のこと

文字列の場合はどうでしょうか?
以下のように文字列の配列も Array.Sort を使ってソートできます。

上記のコードでは、アルファベット順の英語、その次に日本語という順にソートされます。

Array.Sort以外のソート方法

C#の配列をソートしたい場合、「Array.Sort」以外にもいくつかの方法があります。

List.Sortでのソート

Array型は要素の数が決まったデータに使う一方、List型は要素の数がプログラム実行中に決まっていく可変長のデータに使われます。

サンプルコードのようにSortメソッドを用いることで、要素を昇順に並べることができます。Sortメソッドの引数には何も設定していません。

ラムダ式でのソート

Sortの引数にラムダ式を指定することで、ソートの条件を変更することができます。
ラムダ式とは、関数を変数のように扱えるようにするものです。例えば、下記のサンプルコードのように、Sortメソッドの引数に、「(a, b) => b – a」を設定することで、降順に並べることが可能です。

OrderByメソッドでのソート

データの操作を拡張するLINQを使用して、ソートすることも可能です。LINQを使用するためには、コードの先頭に「using System.Linq;」を追加する必要があります。
その上でソートを行うためには、OrderByメソッドを使用します。OrderByメソッドの引数には、比較方法を指定しますが、ラムダ式を使用するのが一般的です

このサンプルコードでは、昇順にソートします。

LINQでは複雑な並び替えも実現できます。例えば、血液型でソートするが、血液型が同じ場合は年齢順でソートする、というような処理を、OrderByに続けて、ThenByメソッドを使用することでソートが可能です。

これらのソート方法は、状況に応じて使い分けることがおすすめです。例えば、要素の挿入や削除を行う場合には、動的にサイズを変更できる「List.Sort」が適しています。「ラムダ式」では、要素のプロパティや条件に基づく複雑なソートが可能です。また、「OrderByメソッド」では、複雑な並び替えをよりシンプルなコードで記述できます。

配列を活用してC#を使いこなそう

C#の配列を活用すれば、多くのデータを扱うプログラムを効率的に書き、プログラミングの幅を広げることが可能です。

Udemyでは、C#について学べる講座が揃っています。C#のプログラミングについてさらに詳しく学びたい方には、以下の講座がおすすめです。

Udemyおすすめ講座

一週間で身につくC/C++言語

一週間で身につくC/C++言語

4.4(3,304 件の評価)

22,591 人の受験生

作成者: 亀田 健司(プログラミング,IT,講師,C言語,C++言語,Java)

IoTなどの普及によりC言語やC ++言語が再度脚光を浴びています。UnrealEngine等のゲーム開発やビジネスの場面で役立つC ++、C言語をこのコースでマスターしましょう。

\無料でプレビューをチェック!/

講座を見てみる

評価:★★★★★
簡単なサンプルプログラムが多く付属していて、実際に動かして学ぶことができる。またステップ実行で変数やクラスの状態の変化を説明しているのも理解の助けになって良い。

評価:★★★★★
C言語での開発経験はありましたが、10年以上ブランクがあったので、C言語入門、C言語応用を飛ばさずに最初から受講しました。C言語で認識が曖昧だった点が明確になりました。オブジェクト指向はC#で習得していたので、C++の内容はすんなり頭に入りました。説明の順番が注意深く設定されているので、初心者にも判りやすいと思います。

配列の宣言や初期化、ソートの方法などを理解して、C#によるプログラミングに取り組みましょう!