過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです.
画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.配列の要素数を取得する方法としてLengthプロパティとCountプロパティとCountメソッドがあります。
配列によってあるメンバーが違うはなぜでしょうか
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メソッドを使うようにしましょう。



