![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| derek |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
вообщем задача такая, есь массив L1,L2,L3. Массивы L1 и L2 заполняются случайными числами. Есть процедура, которая поочередно сравнивает каждое значение обоих массивов, и если значения равны, то это значение записывается в L3...
проблема в следующем, если забить массивы L1,L2 в ручную то все работает, а если массивы L1, L2 забиваются рандомно, то ничего не работает... вот код забивания массивов рандомом
а вот код сравнение элементов массивов L1 и L2
P.s. под "массивами" в данном случае имею ввиду listbox |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Так ведь если массивы заполняются случайными числами от 0 до N, не факт что обязательно найдётся попарное совпадение. Например, в одном массиве не будет числа 4, а в другом - числа 8.
И что вообще означает:
Что именно "не работает" ? Поконкретнее. -------------------- ![]() |
|||
|
||||
| derek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
mr.DUDA, массивы у меня заполняются не от 0 до N, а от 0 до 10-ти...и самих элементов каждого массива 10. так что там не может не быть хотя бы одного совпадения...
а не работает буквально - нажимаю на кнопку на которую повешен код сравнения L1 и L2 - и как будто я на нее и не нажимал...вообщем эффекта ноль...в то же время - если руками забить ТЕ ЖЕ числа которые при предыдущем запуске сгенерировал рандом - то все работает... такое ощущение что в коде заполнения массивов рандомными значениями,в listbox'ы просто добаляются строчки со случайными числами, а item'ам соостветвующие значение не присваиваются...т.е...массив значениями не заполняются - не знаю как это может быть.... Это сообщение отредактировал(а) derek - 29.10.2006, 22:54 |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Тьфу ты. С каких пор ListBox называют массивом?! Этим ты всех и запутал.
В ListBox'е хранятся ссылки на объекты. Поэтому, когда ты добавляешь в него число, оно "оборачивается" (boxing) в System.Object и в этом виде добавляется в коллекцию Items. Таким образом, сравнивая два элемента, фактически, ты сравниваешь ссылки на объекты, а не их значения. Используй if ((int)L1[i] == (int)L2[j]), и будет тебе счастье |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
0..N общий случай для 0..10, мы говорим об одном и том же
хотя бы одно будет оч. странно... чем отличается код, когда int-ы руками забиваются в листбокс, от кода с random-ом ? можно его посмотреть ? но другой пример то работает ! -------------------- ![]() |
||||
|
|||||
| derek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
тут я немного неправильно выразился. под "вводом значений руками" я подразумевал "ввод значений через конструктор"...т.е. кода собственно и не было да это работает...но есть вопрос - что это вообще за метод такой (int)L1[i] - имею ввиду (int) - это ведь не конвертирование, ведь нельзя объект переконвентировать в int...вообщем это работает...но КАК это работает мне не ясно... |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Почему? При выполнении Add мы упаковываем value-тип int (System.Int32) в object (System.Object), а потом приводим object к типу int и распаковываем. По сути, операция приведения - это и есть конвертация.
mr.DUDA, волшебство, однако. Действительно, почему работает ручное заполнение? |
|||
|
||||
| thomas |
|
||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
Exception,
Потому как товарищ derek, сам ответил на свой вопрос
ListBox он заполняет, а где он присваивает значения своим массивам я не увидел. Он заполняет значениями только listBox L1 L2. А где массивы? -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Когда руками добавляем, в дизайнере - в листбоксе будут строки. А в примере сравниваются числа. Пример вообще не должен работать при таких условиях.
-------------------- ![]() |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
Привет всем.
Мне думается, должно быть так
PS извините переменную по фламандски назвал getal=число. Это сообщение отредактировал(а) thomas - 30.10.2006, 18:14 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
mr.DUDA
В том-то и дело! Как тебе известно, строки - ссылочные объекты, а потому сравнение одинаковых строк будет работать и без приведения типов: ссылки на одинаковые строки будут одинаковыми. А вот для value-типов следует выполнять приведение, так как ссылки всегда будут разными. Именно поэтому заполнение строк в дизайнере срабатывало. |
|||
|
||||
| archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 7 Всего: 93 |
добавление в дизайнере от программного добавления отличается немногим...если заглянуть в *.designer.cs, то можно увидеть list1.Items.Add ("...")...и что выдаст такой код?
Это сообщение отредактировал(а) archimed7592 - 31.10.2006, 02:10 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
У меня такой же код выдаёт Ok:
хммм ?.. -------------------- ![]() |
||||
|
|||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 7 Всего: 93 |
он у тебя не такой же
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Ну это несерьёзно -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |