Подумайте об этом так: LastIndexOf
бессмысленно с пустой строкой.Можно сказать, что пустая строка существует в каждый индекс в строке между каждым символом.Документация , таким образом, дает окончательный ответ на то, что должно быть возвращено:
Если значение равно String.Empty , возвращаемое значение является последней позицией индекса вэтот экземпляр.
По крайней мере, в этом случае он возвращает фактический индекс.Если бы он возвратил длину строки (представляющую индекс «после» конца, который, как я считаю, был вашей точкой), он возвратил бы результат для метода с именем LastIndexOf
, который даже не является индексом.
И вот другой способ взглянуть на это: если у меня есть это:
Dim index As Integer = str.LastIndexOf("")
... тогда я должен быть в состоянии сделать это:
Dim substr As String = str.Substring(index, "".Length)
... и получить ""
назад.Конечно, когда LastIndexOf
возвращает индекс last в строке, это работает. Если бы она вернула строку длины , я бы получил ArgumentOutOfRangeException
. Редактировать : Ну, похоже, я ошибся там.Надеюсь, мой первый пункт был достаточно силен сам по себе;)