1. C# / Говнокод #5466

    +121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    public static T FirstOrDefault<T>(IEnumerable<T> it)
    {
       foreach (T v in it)
         return v;
       return default(T);
    }

    Самодельный FirstOrDefault.

    Боюсь даже представить, как у автора будет выглядеть Single

    Запостил: bober_maniac, 31 Января 2011

    Комментарии (3) RSS

    • this забыли :-) а вообще - это вполне нормальная реализация, нет? (перегрузки без предиката, которая тоже есть в LINQ)
      Ответить
    • Ничё так, кошерненько.
      Оценим оригинальный FirstOrDefault, из Рефлектора:
      public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source)
      {
          if (source == null)
          {
              throw Error.ArgumentNull("source");
          }
          IList<TSource> list = source as IList<TSource>;
          if (list != null)
          {
              if (list.Count > 0)
              {
                  return list[0];
              }
          }
          else
          {
              using (IEnumerator<TSource> enumerator = source.GetEnumerator())
              {
                  if (enumerator.MoveNext())
                  {
                      return enumerator.Current;
                  }
              }
          }
          return default(TSource);
      }
      Ответить

    Добавить комментарий