![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ZUBR80 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.5.2005 Репутация: нет Всего: 2 |
Есть два массива например чисел.
Что-то я не могу найти функции, которая бы проверила, что массивы одинаковые. Неужели надо самому писать поэлементное сравнение? |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Думаю, да. А чем тебе не нравится поэдементное сравнивание?
|
|||
|
||||
| ZUBR80 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.5.2005 Репутация: нет Всего: 2 |
Длинно очень...
Куда проще написать a = b |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Сравнит ссылки (если бы позволил C# Могу помочь
|
|||
|
||||
| ZUBR80 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.5.2005 Репутация: нет Всего: 2 |
Сравнивать ссылки должен a is b.
А сравнивать содержимое должен a=b. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Время отработки на миллионном массиве int-ов (полный проход) : 156203 тиков таймера, или ~15.6 милисекунд
P4 2.4 Добавлено @ 09:39 Ну тогда уж a==b, а a=b занимется присваиванием |
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
А метод Equals() никак?
-------------------- 3 ГОДА НА |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Так и знал, что кто-нибудь спросит VisualProgrammerNET, а ты пробовал У меня не получилось. Equals() возвращает true только, если сравниваю один и тот же объект |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
Equals сравнивает только ссылки, по другому он и не работает.
т.е. он он даст true только если мы одному инстансу класса, того же допустим ArrayList, явно присвоим другой инстанс этого же класса. я что-то тоже не пойму большого смысла перегрузки метода Equals в ArrayList. он все равно те же ссылки двух массивов проверяет. не велика разница, что ссылки на объекты проверять, что на массивы. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| ZUBR80 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 17.5.2005 Репутация: нет Всего: 2 |
Речь идет не о ArrayList, а о Array.
Странно, что в статик методах Array нет команды сравнивания |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
||||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
is тут вообще не при чем. Он устанавливает отношение subtyping'а, а не равенство ссылок. Справа от is должен стоять тип, а не значение.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| jorikdima |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Извиняюсь что поднимаю старую тему.
Вопрос новичка. Два одинаковых массива byte[] new byte[] {0xFF,0xFF} Неужели никак не проверить их эквивалентность кроме как побайтово??? Почему нет статического метода в Array?? Или Equals непереопределен в Array как надо???? |
|||
|
||||
| Raid |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 10.6.2007 Где: Москва Репутация: нет Всего: нет |
Не говорю, что я спец в этом и если что-то неправильно напишу не ругайте сильно - я только учусь.
"В общем случае массив представляет собой набор элементов, расположенных непрерывно в области памяти" В классе object определено 2 метода Equals. Один из них не статический. Он проверяет равенство ссылок a.Equals(b) Второй статический, и проверяет равенство содержимого значений в ячейках памяти. Equals(a, b) И если вызывать второй, который должен сравнивать содержимое и передавать ему массив, то он должен сравнивать содержимое ячеек памяти, в которой собственно хранится "ссылка" - адрес первого элемента массива. Для разных массивов, пусть даже и содержащих одинаковые элементы он очевидно разный. Статический метод достался Array от Object. Если где-то ошибся, подправьте. |
|||
|
||||
| FractalizeR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: -1 Всего: 4 |
Ячейки памяти в любом случае сравниваться с помощью Equals не будут. Встроенного механизма сравнения массивов в C# нет. Нужно писать свой.
-------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |