Форум программистов, компьютерный форум, киберфорум
Наши страницы
XRoy
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Linq Agregate

Запись от XRoy размещена 29.09.2014 в 19:17

Linq Agregate

Разница между
C#
1
s = s.Where((c, i) => i%2 == 1).Aggregate("", (str, c) => str + c);
и
C#
1
s = s.Where((c, i) => i%2 == 1).Aggregate("", (str, c) => str += c);
Во втором варианте лишние присваивание.
Если разобраться, получится
C#
1
str = str += c
В IL появятся две лишние инструкции
C#
1
2
    IL_000c:  dup
    IL_000d:  starg.s    str
Размещено в Без категории
Просмотров 719 Комментарии 4
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Аватар для tezaurismosis
    Второй вариант и выглядит как-то не совсем обычно. Я сначала подумал, что предполагается накопление всех элементов в str, но этого не происходит и из-за этого += выглядит не к месту.
    Оказывается, это ещё и вредно
    Запись от tezaurismosis размещена 30.09.2014 в 11:58 tezaurismosis вне форума
  2. Старый комментарий
    Аватар для taras atavin
    [QUOTE][CSHARP]s = s.Where((c, i) => i%2 == 1).Aggregate("", (str, c) => str += c);[/CSHARP][/QUOTE]А зачем сравнивать с единицей результат сравнения на больше или равно [CSHARP](c, i)[/CSHARP] с остатком от деления i пополам? И ещё помнить, каким кодом обозначена true? Проще же [CPP]s.Where(с>=i%2)[/CPP]. Кстати, какой здесь вообще толк от i?
    Запись от taras atavin размещена 30.09.2014 в 12:37 taras atavin вне форума
  3. Старый комментарий
    taras atavin
    i в данном случае индекс, если вы сделаете так
    C#
    1
    
    s.Where(с>=i%2)
    то у вас же i не существует.
    Запись от XRoy размещена 04.10.2014 в 01:41 XRoy вне форума
  4. Старый комментарий
    Аватар для tezaurismosis
    Цитата:
    А зачем сравнивать с единицей результат сравнения на больше или равно
    => это знак для описания лямбд, а не больше или равно
    Цитата:
    И ещё помнить, каким кодом обозначена true?
    Никаким, в C# true и 1 не равны и относятся к разным типам.
    Цитата:
    s.Where(с>=i%2)
    Проще, ибо не скомпилируется.
    Запись от tezaurismosis размещена 08.10.2014 в 15:21 tezaurismosis вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru