Определение метода Substring()
в классе .net System.String
похоже на это
public string Substring(int startIndex)
Где startIndex
- "Начальная позиция символа нулевой основы подстроки в этом экземпляре" в соответствии с определением метода. Если я правильно понимаю, это означает, что он даст мне часть строки, начиная с нулевого индекса.
Теперь, если у меня есть строка "ABC"
и взять подстроку с разными индексами, я получаю следующие результаты.
var str = "ABC";
var chars = str.ToArray(); //returns 3 char 'A', 'B', 'C' as expected
var sub2 = str.Substring(2); //[1] returns "C" as expected
var sub3 = str.Substring(3); //[2] returns "" ...!!! Why no exception??
var sub4 = str.Substring(4); //[3] throws ArgumentOutOfRangeException as expected
Почему это не исключает исключение для случая [2]??
Строка имеет 3 символа, поэтому индексы [0, 1, 2]
, и даже ToArray()
, ToCharArray()
метод возвращает 3 символа, как ожидалось! Не следует ли это исключать, если я пытаюсь Substring()
с начальным индексом 3
?