![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Pankon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: 3 Всего: 5 |
Почему IndexOf не дает исключения?
В MSDN написано: IndexOf дает исключение, если
Проверяем
Строка source содержит два символа, казалось бы, что int res2 = source.IndexOf(tag, 2); должно давать исключение, но этого не проиходит, а вот char charRes = source[2]; как и положено дает IndexOutOfRangeException ПС. Все это конечно не очень принципиально, но хотелось бы понять, какая (официальная MS)идея скрыта за такой реализацией. |
||||
|
|||||
| Ctrl |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 12.2.2008 Где: Tula Репутация: 6 Всего: 7 |
Куда пропадает твой эксепшн, можно понять поэтапно анализируя код этой самой функции IndexOf.
Этап 1: System.String.IndexOf(string value, int startIndex)
Тут вроде все путем.. Этап 2: System.Globalization.CompareInfo.IndexOf(string source, string value, int startIndex)
Вот первый эксепшн - нулреференс. (Обрати внимание на выражение source.Length - startIndex) Этап 3: System.Globalization.CompareInfo.IndexOf(string source, string value, int startIndex, int count, CompareOptions options)
Вот тут и видим - эксепшна НЕТУ!! т.к. count не меньше нуля и позиция(startIndex) не выходит за границы (startIndex > (source.Length - count)!!! Т.е. никакого OutOfRange нет,что и требовалось доказать!!! |
||||||
|
|||||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
тоже самое хотел написать... да неуспел
Все правильно, считаю это багом (нестыковка описания и реализаций). -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 8 Всего: 40 |
может это было сделано, исходя из логики, что начиная с позиции равной Length находится подстрока String.Empty.
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
скорее символ окончания строки... Но практической ценности в этом я не вижу.
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: 3 Всего: 5 |
||||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |