Piénsalo de esta manera: LastIndexOf
es un poco sin sentido con una cadena vacía. Se podría decir que la cadena vacía existe en cada índice dentro de una cadena, entre cada carácter. El documentation proporciona de este modo una respuesta definitiva para lo que debería ser devuelto:
Si el valor es String.Empty, el valor de retorno es la última posición de índice de este caso.
Al menos en este caso se devuelve un índice de real. Si devuelve la longitud de la cadena (que representa el índice "después" del final, que creo que era su punto) devolvería un resultado para un método llamado LastIndexOf
que ni siquiera es un índice.
Y aquí hay otra forma de verlo: Si tengo esto:
Dim index As Integer = str.LastIndexOf("")
... entonces yo debería ser capaz de hacer esto:
Dim substr As String = str.Substring(index, "".Length)
... y obtener ""
espalda. Efectivamente, cuando LastIndexOf
devuelve el último índice en la cadena, funciona.
Si devolviera la cadena
longitud, obtendría un
ArgumentOutOfRangeException
.
Editar: Bueno, parece que estaba equivocado allí. Afortunadamente mi primer punto fue lo suficientemente fuerte por sí mismo;)
¿Cuál es su concepto de 'string.Empty'? ¿Qué es? – thecoop
Todo no contiene nada. Nada está en todas partes. – BoltClock
Mi pregunta sería ¿por qué hay tantos votos para una pregunta tan sin sentido? ¿Por qué exactamente importa si uno sabe si una cadena C# termina o no en una cadena vacía? ¿Cómo usarías tal información tan valiosa? – Blake7