|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Не могу разобраться с элементарным. Foreach за место for юзаю и понимаю. Но вот со следующей конструкцией пока не получается. Допустим есть коллекция интеджеров Код: c# 1. 2. 3. 4.
Хочу возвести ее в квадрат с помощью следующей КОНСТРУКции: Код: c# 1. 2. 3.
XXXX = В ЭТОМ МЕСТЕ ПРОБЛЕМА. НЕ ПОЛУЧАЕТСЯ ВПИХНУТЬ НАЗВАНИЕ ФУНКЦИИ КОТОРАЯ ВОЗВЕДЕТ ВСЕ В КВАДРАТ, а точнее как именно она должна выглядеть Заранее благодарю за тупой вопрос от новичка ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 14:59 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
А обязательно делать через Action? в данном случае, можно обойтись просто LINQ-выборкой ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:06 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:08 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Belobrodsky, Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:08 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Чисто в учебных целях для себя )) сделать можно и по рабоче крестьянски ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:09 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Shocker.Pro Код: c# 1.
упс, случайно лишний пробел Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:09 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Belobrodsky, метод ForEach не подходит для операций измененящих коллекцию. Об этом сказано в MSDN: http://msdn.microsoft.com/en-us/library/bwabdf9z(v=vs.110).aspx Modifying the underlying collection in the body of the Action<T> delegate is not supported and causes undefined behavior. Используй обычный цикл for. Держа вышесказанное в уме при желании все-таки можно заставить ForEach выполнить эту работу: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Это плохой код потому что полпгается на замыкания и потому что он хуже чем старый добрый цикл for. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:25 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Всем спасибо за ответы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 15:46 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Еще один вопрос, чисто ради красоты кода. При использовании foreach для перебора элементов коллекции(массива) и желании иметь порядковый номер элемента в коллекции, есть ли какое-нибудь встроенный метод или свойство. возвращающее порядковый номер текущего элемента в коллекции или надо самостоятельно включать счетчик и делать ++ на каждой итерации, то есть как оптимизировать код Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
чтобы убрать index? реально ли? П.С. Чисто с эстетической целью интересуюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 13:34 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Belobrodsky, в MSDN забанили? http://msdn.microsoft.com/ru-ru/library/8bd0tetb(v=vs.110).aspx Но в данном случае логично просто использовать цикл for. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 13:37 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
BelobrodskyПри использовании foreach для перебора элементов коллекции(массива) и желании иметь порядковый номер элемента в коллекции используют for и не парят себе и другим мозги ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 13:37 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Belobrodsky, в вашем примере вообще без внешнего индекса никак BTW. потому что для 123 indexof будет работать некорректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 13:39 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Спасибо. IndexOf сам убедился что не подходит. Arm79, мой пример, чтобы до нести суть вопроса, а не для решения реальной задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 13:48 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
BelobrodskyСпасибо. IndexOf сам убедился что не подходит. Arm79, мой пример, чтобы до нести суть вопроса, а не для решения реальной задачи Еще раз, ваш пример - типичное никому не нужное извращение. Вы походу вообще не врубились в особенности циклов. Итак, ни один из циклов не дает никакой информации по "порядковому номеру" элемента в коллекции. for - это красивая обертка над while (этим отличается от цикла for в Delphi, если вы его изучали).Из этого следует, что вы можете в теле цикла как угодно извращаться с переменной цикла. Например, три раза увеличите на 1, и один раз уменьшите на 2. В любом случае, пока условие истинно, цикл будет исполняться. Таким образом я хочу подчеркнуть, что информация о порядковом номере элемента в коллекции хранится в самой коллекции. Переменная цикла в этом случае выступает как текущий ВНЕШНИЙ индекс. Что касается foreach - это альтернативный доступ, предоставляемый коллекцией к своим элементам. Он изначально не заточен ни на какие порядковые номера. Например, деревья, или Dictionary, или HashSet. В общем, любой объект, который поддерживает итератор. Даже больше - такой объект может вообще не иметь никаких элементов, а динамически генерировать значения по своему усмотрению. Подвожу итоги: 1) ни один цикл отношения к порядковому номеру элемента где-нибудь не имеет. 2) это где-нибудь, а точнее что-нибудь, может поддерживать, а может и не поддерживать доступ по порядковому номеру либо по имени, аналогично и с итераторами. 3) Определение порядкового номера элемента - это забота того объекта, который и хранит элементы. Обычно за это отвечает элемент IndexOf. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 14:01 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
BelobrodskyСпасибо. IndexOf сам убедился что не подходит IndexOf прекрасно подходит для вашего примера, просто вы не прочитали Help. Иначе бы знали, что этот метод возвращает ПЕРВОЕ вхождение элемента в коллекции. То есть он ведет себя совершенно корректно. И у него есть перегрузки , которые позволяют после нахождения первого элемента искать и последующие, просто нужно немного приложить усилий. Организовать цикл пока метод не вернет -1, и всего то делов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 14:06 |
|
Базовый вопрос про делилат в foreach
|
|||
---|---|---|---|
#18+
Belobrodsky, природа foreach базируется на перечислениях, у них есть начало и может не быть конца в один прекрасный момент вы отстрелите себе ногу этим пробелом . Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 14:19 |
|
|
start [/forum/topic.php?fid=20&msg=38747993&tid=1402463]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 143ms |
0 / 0 |