FirstOrDefault VS C#の検索

原文: FirstOrDefault VS C#の検索

この方法は、より高いパフォーマンスを使用するために、配列の最初の要素を取得するときに、この記事では説明します。

我々は2つの方法が、使用前の基準にLINQの、LINQのニーズの方法があることを知っている必要があります。リストについては、などが列挙継承されEnumerable、その後、最初の要素を使用することができます取得しますFirstOrDefaultあなたが使用している場合はFind種類を、あなたは配列である必要がありますIList

次の書き込みの簡単な例

コード逆コンパイルして下さいので、我々はより多くの可能性が見れることを利用検索と利用の判定にあり、いくつかのコードを削除するには、次のコードを、下に見ることができます

private T[] _items;

public T Find(Predicate<T> match)
{

  for (int index = 0; index < this._size; ++index)
  {
    if (match(this._items[index]))
      return this._items[index];
  }
  return default (T);
}

FirstOrDefaultコードは、リストのGetEnumeratorメソッドを呼び出すだけでなく、処分するコールの終了時のforeachを、存在します。このような性能は、検索よりもやや悪化しFirstOrDefaultでしょう。

public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
  foreach (TSource source1 in source)
  {
    if (predicate(source1))
      return source1;
  }
  return default (TSource);
}

だから、のためのList最初のFindをデフォルトの取得または使用し、他の用途の種類FirstOrDefault

  • リストについては、foreachのの2倍の速度で使用

  • 配列はリストの2倍の速度を横断する横断

  • トラバース速度にforeachのを使用してアレイを横断するための使用は、5倍の一覧です

参照してください:https://stackoverflow.com/a/365658/6116637

本当にのためのパフォーマンスを比較したいとforeachのは何?(測定データの性能比較を付属) - walterlv


:この記事では、元読んでください、頻繁に更新されますhttps://blog.lindexi.com/post/C-Find-vs-FirstOrDefault.htmlの知識の古いエラー、より良い読書体験を誤解を避けるために、。

あなたは私の最新のブログを読むことを続けたい場合は、をクリックしてくださいRSSフィード、使用することをお勧めしますRSSストーカーをブログ、またはを購読する私のホームページCSDNの懸念をご覧ください。

クリエイティブコモンズライセンス この作品は、ある非営利- -同一条件許諾4.0の国際ライセンス契約クリエイティブ・コモンズのライセンスのために。転載、使用、再投稿が、(リンクを含む:リンデ西が署名した文書保管してくださいへようこそhttps://blog.lindexi.comは)、紙のライセンス変更に基づいて、同じ作業を公開するようにしてください、商業目的のために使用してはなりません。ご質問があれば、してください私に連絡

以下は時間を宣伝しています

推奨国民の関心Edi.Wang号

おすすめ

転載: www.cnblogs.com/lonelyxmas/p/12082241.html