2011-11-30 15 views
5

Esto es como una pregunta para principiantes pero el código que estoy viendo está en producción y no quiero romper nada. Así que, por si acaso: no essubcadenas longitud

text.Substring(index, length).Length 

es equivalente a poco length?

(A excepción de la ArgumentOutOfRangeException potencial.)

+1

No descontar el valor de la excepción. –

+0

Estos no están en el intento. Supongo que hay una suposición fuera de rango que nunca ocurrirá. – Nickolodeon

+0

Ponerlo en un bloque de prueba destruiría el valor. La suposición no es que nunca ocurra, es que no puede causar problemas si ocurre. –

Respuesta

6

sí, va a ser exactamente el mismo.

+0

Siempre estoy demasiado lento :( –

+0

Mis dedos son como un rayo hoy:] – Polynomial

+0

Acabo de recibir mi privilegio de comentar en todas partes. Justo a tiempo para llegar tarde a la fiesta :-) – dash

1

A mí me gusta. No veo ninguna razón para escribirlo así.

+0

La única explicación que pensé para mí es que el autor (aunque experimentado) vino de C++ en segundo plano. Probablemente tuvieron problemas con codificaciones multibyte y así evitaron los cálculos manuales. – Nickolodeon

+0

@Nickolodeon - Incluso en ese caso, no tiene ningún sentido. 'Subcadena' y' Longitud' operan en una cantidad de * caracteres *, no en una cantidad de * bytes *. Multibyte no tendría ningún efecto aquí, y tampoco puedo ver una situación en la que lo haría en un caso similar en C++. – Polynomial

+0

Acabo de recordar vagamente que la cadena en C++ es realmente un char []. char a su vez (al menos, solía ser) un byte. – Nickolodeon

0

Vamos a ver lo que esto significa en realidad con algunos números:

"Mi cadena de prueba maravilloso" .Substring (0, 2) .length == "Mi" .length = 2

"Mi prueba maravilloso cadena" .Substring (4, 2) .length == "ro"= 2

Como usted dice, si startIndex + longitud> longitud de la cadena, o startIndex no está en la cadena a continuación, un ArgumentOutOfRangeException se lanza

Así que sí, ya que todos los demás casos potenciales arrojan una excepción.

Mi sospecha es que el autor no sabía que el borde del caso (cuando startIndex + length> end of string) lanza una excepción.

+0

En nuestro caso, el índice siempre es> = 0 y agregué un cheque al principio de que la cadena no está vacía. – Nickolodeon

Cuestiones relacionadas