Подумайте об этом так: LastIndexOf
- это бессмысленно с пустой строкой. Можно сказать, что пустая строка существует на каждый индекс внутри строки, между каждым символом. documentation, таким образом, дает однозначный ответ на то, что должно быть возвращено:
Если значение String.Empty, возвращаемое значение является последним индексом в этого экземпляра.
По крайней мере, в этом случае он возвращает действительный индекс. Если он вернул длину строки (представляя индекс «после» конца, который, по моему мнению, был вашей точкой), он будет возвращать результат для метода с именем LastIndexOf
, который даже не является индексом.
А вот еще один способ смотреть на него: Если у меня есть это:
Dim index As Integer = str.LastIndexOf("")
... то я должен быть в состоянии сделать это:
Dim substr As String = str.Substring(index, "".Length)
... и получить ""
назад. Конечно, когда LastIndexOf
возвращает последний индекс в строке, он работает.
Если он вернул строку
длиной, я бы получил
ArgumentOutOfRangeException
.
Редактировать: Ну, похоже, я был не там. Надеюсь, мой первый пункт был достаточно сильным сам по себе;)
Какова ваша концепция 'string.Empty'? Что это? – thecoop
Все не содержит ничего. Ничто не повсюду. – BoltClock
Вопрос в том, почему так много голосов за такой бессмысленный вопрос? Почему именно имеет значение, что известно, что строка C# выполняет или не заканчивается пустой строкой? Как именно вы использовали бы такую ценную информацию? – Blake7