Ну поскольку какое-никакое решение уже предложено, резонно задаться вопросом — а с чем боремся, почему оно плохо? Хотим что бы быстрее+меньше кода? Что бы проще для написания? Что бы гибкость выше была? Или что?
S>Ну поскольку какое-никакое решение уже предложено, резонно задаться вопросом — а с чем боремся, почему оно плохо? Хотим что бы быстрее+меньше кода? Что бы проще для написания? Что бы гибкость выше была? Или что?
Хочется что бы был один запрос
Здравствуйте, Tom, Вы писали: Tom>Хочется что бы был один запрос
Странно, что Симметрической разности над множествами нет, достаточно просто реализуемая при сравнении сортрованных множеств.
и солнце б утром не вставало, когда бы не было меня
Вообще касательно ForEach я потихоньку пришел к выводу, что не грех самом деле свой ForEach написать. С т.з. лаконичности кода это окупиться сто раз, к тому же часто приходится работать и с коллекциями, которые восходят к не-генерик интерфейсам — и можно сделать универсальную реализацию, которая позволит избежать лишних преобразований.
Здравствуйте, Tom, Вы писали:
S>>Ну поскольку какое-никакое решение уже предложено, резонно задаться вопросом — а с чем боремся, почему оно плохо? Хотим что бы быстрее+меньше кода? Что бы проще для написания? Что бы гибкость выше была? Или что? Tom>Хочется что бы был один запрос
Не, один запрос — это тут без мазы. Вот одна строка кода — лехко, к примеру:
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Вообще касательно ForEach я потихоньку пришел к выводу, что не грех самом деле свой ForEach написать. С т.з. лаконичности кода это окупиться сто раз, к тому же часто приходится работать и с коллекциями, которые восходят к не-генерик интерфейсам — и можно сделать универсальную реализацию, которая позволит избежать лишних преобразований.
Ну и что? Там высказано частное мнение, что ForEach в таком виде это вообще плохо. Основная причина, что противоречит принципам функционального программирования. Я как-то не припомню, чтобы C# стал pure functional language. Лично мне запись вида:
list.ForEach(x => DoSmth(x), x => Condition(x));
импонирует больше, чем:
foreach (var x in list)
if (Condition(x))
DoSmth(x);
ВВ>>foreach (var x in list)
ВВ>> if (Condition(x))
ВВ>> DoSmth(x);
ВВ>>
L>А если L>
L>foreach (var x in list.Where(Condition))DoSmth(x);
L>
Ну если оперировать теми же аргументами, что и в приведенном здесь блоге, то этот вариант практически идентичен вышеприведенному — ведь кол-во символов практически то же:
foreach (var x in list) if (Condition(x)) DoSmth(x);
foreach (var x in list.Where(Condition)) DoSmth(x);
Нет, шорт! В первом случае на один символ даже меньше
Здравствуйте, Tom
Tom>Вопрос, можно как то ещё упростить такой вот запрос:
Во-первых используем HashSet. Во-вторых не мешаем императивщину с функциональным стилем. То что в языке появилась ФИЧА не означает что фичу надо пихать куда попало.
А то тут уже linq к парсингу строк прикрутить пытались.
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, Воронков Василий, Вы писали:
ВВ>>Вообще касательно ForEach я потихоньку пришел к выводу, что не грех самом деле свой ForEach написать. С т.з. лаконичности кода это окупиться сто раз, к тому же часто приходится работать и с коллекциями, которые восходят к не-генерик интерфейсам — и можно сделать универсальную реализацию, которая позволит избежать лишних преобразований.
IB>http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, IB, Вы писали:
IB>>http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx
ВВ>Ну и что? Там высказано частное мнение, что ForEach в таком виде это вообще плохо. Основная причина, что противоречит принципам функционального программирования. Я как-то не припомню, чтобы C# стал pure functional language. Лично мне запись вида:
ВВ>
ВВ>list.ForEach(x => DoSmth(x), x => Condition(x));
ВВ>
ВВ>импонирует больше, чем:
ВВ>
ВВ>foreach (var x in list)
ВВ> if (Condition(x))
ВВ> DoSmth(x);
ВВ>
ИМХО
list.ForEach(x => DoSmth(x), x => Condition(x));
читается не лучше, но, как и сказано в указанном блоге, недебагебелбно
Здравствуйте, Ziaw, Вы писали:
ВВ>>Почему? Кода меньше не становится? Z>А какие еще преимущества у такой записи?
Я уже говорил — тут каждый выводы делает сам
На мой взгляд преимущество тут точно такое же как и у простого Where(x => Condition(x)) перед if (Condition(x)) {} — когда "букаф" даже больше получается.
Ну и давайте вспомним такую штуку как однообразность кода. Если я в одном месте использую ForEach, то и в другом, в аналогичной ситуации, хотелось бы тоже.