Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
20:05:2008, 09:34
|
|
Новенький Группа: Программист Сообщений: 25 Регистрация: 17:05:2008 Пользователь №: 17 354 Репутация: 0
|
Если посмотреть в реализацию оператора == типа String можно увидеть следующее:
Реализация Equals следующая: Видно, что внутри присутстсвует оператор ==. Так вот почему не происходит зацикливаение? В моем примере кидает исключение StackOverflowException: Ну и где-то вызов: В чем прикол? |
|
Сообщение
#1
|
|
![]() |
|
|
20:05:2008, 09:55
|
|
Новенький Группа: .NET UG team Сообщений: 86 Регистрация: 9:03:2006 Пользователь №: 3 049 Репутация: 0
|
Обрати внимание что в коде восстановленном рефлектором нет никакого оператора ==, есть только public static bool op_Equality(string a, string b ). То бишь, вот здесь return ((a == b ) || (((a != null) && (b != null)) && EqualsHelper(a, b ))); происходит сравнение референсов, а не вызов оператора сравнения.
Сообщение отредактировал mr_ST - 20:05:2008, 10:37 |
|
Сообщение
#2
|
|
|
|
20:05:2008, 10:14
|
|
Новенький Группа: Программист Сообщений: 25 Регистрация: 17:05:2008 Пользователь №: 17 354 Репутация: 0
|
Понимаю куда вы клоните, однако, как в приведенном мной примере добиться того же результата. Рефлектор восстанавливает точно такой же код как в случае и со String
Сообщение отредактировал Glucklich - 20:05:2008, 10:17 |
|
Сообщение
#3
|
|
|
|
20:05:2008, 10:40
|
|
Новенький Группа: .NET UG team Сообщений: 86 Регистрация: 9:03:2006 Пользователь №: 3 049 Репутация: 0
|
|
|
Сообщение
#4
|
|
|
|
20:05:2008, 12:20
|
|
Новенький Группа: Программист Сообщений: 25 Регистрация: 17:05:2008 Пользователь №: 17 354 Репутация: 0
|
|
|
Сообщение
#5
|
|
|
|
20:05:2008, 13:19
|
|
Божественный Группа: Модеры Сообщений: 1 293 Регистрация: 17:05:2006 Из: Минск Пользователь №: 4 257 Репутация: 29
|
Glucklich
Это ошибка в рефлекторе. Код сравнения в String.Equals примерно такой: - тупое сравнение двух unsigned integer.При компиляции твоего кода получается что-то вроде - Вызов оператора. Оба случая рефлектор показывает как ==.
|
|
Сообщение
#6
|
|
|
|
20:05:2008, 14:28
|
|
Новенький Группа: .NET UG team Сообщений: 86 Регистрация: 9:03:2006 Пользователь №: 3 049 Репутация: 0
|
|
|
Сообщение
#7
|
|
|
|
20:05:2008, 14:44
|
|
Новенький Группа: Программист Сообщений: 25 Регистрация: 17:05:2008 Пользователь №: 17 354 Репутация: 0
|
Интересно, сколько еще там глюков?
|
|
Сообщение
#8
|
|
![]() |
|
Текстовая версия | Сейчас: 8:01:2009 - 23:15 |