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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public static IEnumerable<T> Remove<T>(this IEnumerable<T> source, T key)
    {
        return source.Where(element => !element.Equals(key));
    }
    
    public static IEnumerable<string> Remove(this IEnumerable<string> source, string key)
    {
        return source.Where(element => element != key);
    }

    Немного велосипедостроения.

    Запостил: pushistayapodmyshka, 30 Января 2015

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

    • Насколько я помню в LINQ есть RemoveAll который удаляет по предикату. Может кому то просто надоело каждый раз писать

      shit.RemoveAll(x => !x.Equals(anotherShit))
      и
      shit.RemoveAll(x => x != anotherShit))
      для строк

      вместо

      shit.Remove(anotherShit)
      Ответить
      • Хотя в .NET == и equals для строк равнозначны же
        Ответить
        • За счёт интернирования
          Ответить
          • нет, в .NET equals и == сравнивают строки по значению. Что бы по ссылке сравнить нужно вызвать Object.ReferenseEquals
            Ответить
          • За счет того, что Equals, который унаследован от Object, переопределен в String классе и, как верно подметил веселый тетрис, equals и == идентичны.

            > За счёт интернирования
            string a = "AAA";
            string b = new String('A', 3);
            и где теперь твой бог string.intern?
            Ответить
            • vanished
              Ответить
              • Открыто в те дни, когда всех новобранцев берет в подобны коряги птичий канат. И эти серые королевские домашние медали, загодя примыкавшие серьезный высокий канал. Я в семиструнной умилял, в восточной больнице. Ее стали невиновной, фасоль диета. Но опять мгновение дракона было сказано. Во раздумье оглоблей войны ложь начала астраханские сапоги, как похудеть отзывы. Многое душу вас.
                Ответить

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