901. LengthとCountの違い

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

配列の要素数を取得する方法としてLengthプロパティとCountプロパティとCountメソッドがあります。
配列によってあるメンバーが違うはなぜでしょうか

img_0045

Linq用のCount()

C#には配列を便利に扱う機能としてLinqというものがあります。簡単に説明すると、C#の配列をSQL的な書き方でフィルターをかけたり処理したりするようにできるもの。
その中にあるものがCountメソッドです。
メソッドの説明としては、ただ単純に「配列の要素数を返す」というもの。
拡張メソッドなので基本的に配列にはCount()が出てきます。(ただしCountプロパティがある配列は除く。)
Linqによって処理した配列を除いて、ほぼ必ずLengthプロパティかCountプロパティがあるので、こちらのプロパティを使うとことはあまりないかな。

int[] values = new int[] { 100, 200, 300 };
// Linqを使って配列にフィルター
var res =
    from h in values
    where h >= 150
    select h;
foreach (var value in res)
    Console.WriteLine(value);
Console.WriteLine(res.Count());
// 出力:
// 200
// 300
// 2

配列クラス向けのCountプロパティ

Countプロパティは配列クラス、または動的配列に存在するプロパティです。
プロパティの内容は要素の数を返す。というもの

List<int> values = new List<int>();
values.Add(100);
values.Add(200);
values.Add(300);
Console.WriteLine(values.Count);

配列変数向けのLengthプロパティ

こちらもCountプロパティと役割は全く同じ。
主に配列の変数など、動的ではない配列等によくみられます。

int[] values = new int[] { 100, 200, 300 };
Console.WriteLine(value.Length);

 まとめ

基本的に、Countプロパティ・Lengthプロパティがあるならそれを使うべきです。
Linqの時だけCountメソッドを使うようにしましょう。