[解決済み] Count プロパティと Count() メソッドの違い?
2023-02-03 06:10:28
質問
コレクションを使用しているとき、オブジェクトの数を取得するために2つの方法があります。
Count
(プロパティ) と
Count()
(メソッド)の2種類があります。何が重要な違いなのか、どなたかご存知でしょうか?
間違っているかもしれませんが、私はいつも
Count
プロパティを使用します。
Count()
メソッドがコレクションに対してある種のクエリを実行すると仮定しているからです。
Count
は私が「取得」する前にすでに割り当てられている必要があります。しかし、これは推測です。私が間違っていた場合、パフォーマンスに影響が出るかどうかはわかりません。
編集: 好奇心で、それでは
Count()
はコレクションがNULLの場合、例外を投げるのでしょうか?というのも、私は間違いなく
Count
プロパティは単に0を返します。
どのように解決するのですか?
のソースを逆コンパイルする。
Count()
拡張メソッドのソースをデコンパイルすると、このメソッドはオブジェクトが
ICollection
(一般的かそうでないか) であるかどうかをテストし、もしそうなら単に基礎となる
Count
プロパティを返します。
ですから、もしあなたのコードが
Count
を呼び出す代わりに
Count()
を呼び出す代わりに、型チェックをバイパスすることができます。理論的なパフォーマンス上の利点ですが、私はそれが顕著なものであることを疑う
// System.Linq.Enumerable
public static int Count<TSource>(this IEnumerable<TSource> source)
{
checked
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
ICollection<TSource> collection = source as ICollection<TSource>;
if (collection != null)
{
return collection.Count;
}
ICollection collection2 = source as ICollection;
if (collection2 != null)
{
return collection2.Count;
}
int num = 0;
using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{
while (enumerator.MoveNext())
{
num++;
}
}
return num;
}
}
関連
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] C#で同期メソッドから非同期メソッドを呼び出すには?
-
[解決済み] .Any() vs .Count() > 0のどちらのメソッドがより良いパフォーマンスを発揮しますか?
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み】文字列中のある文字の出現回数をカウントする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] リスト CountとCount()の比較 [重複] [重複