![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
В книге "C# 2008 и платформа .NET 3.5 для профессионалов приведён такой код:"
Я никак не пойму каким образом здесь работает foreach. Мы объявляем класс, массива нет ни одного. Где хранятся все значения переданные в list1? Битый час смотрю в код, отлаживаю и ничё не понимаю((( -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
А что удивительного в том, что нет массивов, для реализации списка они не нужны.
На счёт foreach, если ты посмотришь на эту строку, я думаю многое прояснится:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Ничего для меня не прояснилось, к сожалению. Я не понимаю как организовано хранение данных в памяти в данном случае.
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Ещё я не понимаю как в это коде происходит вызов last.Next (55-я строка), если конструктор не вызван: поле объявлено просто как
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
v1rtu0z |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 21.4.2008 Где: Воронеж Репутация: нет Всего: нет |
Да в 55й строке происходит не вызов last, а присваивание. А конструируется то что присваивается в 47й строке. Насчет foreach. Я сам не до конца не понимаю механизм, но обеспечивает возможность перебора интерфейс IEnumerable, который реализует список. Там еще используется ключевое слово yield, которое
|
||||||
|
|||||||
KelTron |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
Тогда бери любой учебник и читай - что такое связный список. http://ru.wikipedia.org/wiki/Связный_список
Что то уж совсем какие то элементарные вещи спрашиваешь... При чём тут конструктор, ссылке значение можно присвоить где угодно, здесь это происходит в этом куске:
Тут last и инициализируется. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||||
|
|||||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
А можно ссылочку откуда вы скачали эту книгу если не сложно. Я как то искал её в нете но только на английском находил((( -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Она у меня в текстовом варианте. Очень хорошая книга. Вообще-то мне всё в книге понятно. Наваждение какое-то с этими списками сегодня. Никак я не пойму где хранятся числа? Кто-нибудь может ответить где здесь хранится массив(ну или как хотите называйте) чисел? Если мы совершенно отдельно вызываем оператор foreach, проходя по всем элементам, значит они где-то хранятся. Я не могу понять где??? Это сообщение отредактировал(а) ДобренькийПапаша - 25.1.2010, 21:23 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
ИМХО пусть меня поправят если я не прав.
У вас в классе LinkedList хранится ссылка на 1 эл списка в нём(в элементе) ссылка на 2ой и т.д. Как я понимаю обекты будут удалены из памяти когда на них не будет ни одной действующей ссылки. А пока они есть всё норм. пока каждый объект ссылается на следующий всё это лежит спокойно в куче. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Я там вижу две ссылки: first и last. Вот собственно два числа тут хранится могут. Но мы добавляем там третье. Первое присваивается first, второе присваивается last и третье тоже присваивает last. Каким образом там сдвиг происходит с помощью Next не понимаю. Стыдно, конечно. Но лучше такие вещи понять поздно, чем никогда. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
KuMa1104 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: 1 Всего: 3 |
это же не числа а классы. KelTron это уже приводил.
Когда происходит list1.AddLast(3); то у нас newNode это ваш 3 элемент.Теперь список не заканчиваеться на 2м элементе и мы показываем это last.Next = newNode; т.е есть 3 элемент. И устанавливаем в last ссылку на последний эл. Эл1(имет в себе ссылку на эл 2) Эл2(имет в себе ссылку на эл 3) Эл3 является последним. У нас список из 3х эл. Класс содержит в себе указатели на начальный и конечный эл списка first - 1й last -3й. Это сообщение отредактировал(а) KuMa1104 - 25.1.2010, 22:17 -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |