2011-06-23 16 views

Respuesta

10

No es una anulación. En este caso, el compilador traduce Split() en Split(char[]) con un parámetro vacío.

de Split is defined como

public string[] Split(
    params char[] separator 
) 

params le permite especificar un número variable de argumentos, incluyendo sin argumentos en absoluto. Cuando no se proporcionan argumentos (como en el ejemplo), la matriz separator estará vacía.

Desde la página de MSDN vinculado anteriormente:

Si el parámetro separador es nulo o no contiene caracteres, los caracteres de espacio en blanco se supone que son los delimitadores.

Es por esto que está viendo la cadena dividida en espacios en blanco. Esto es solo un comportamiento predeterminado en lugar de una función no documentada, por lo que puede usarlo sin temor a efectos secundarios inusuales. Bueno, a menos que el comportamiento predeterminado cambie en una versión futura de .NET, pero eso me parece bastante improbable ya que el espacio en blanco es un valor razonable predeterminado.

+2

Batirme por quince segundos. Maldiciones! (+1) :) –

+0

+1 Sí, y 'ToList()' es un método de extensión de 'System.Linq'. – rsbarro

+0

¡Brillante y rápido! Es por eso que amo StackOverflow. –

3

Desde el remarks to String.Split:

Si el parámetro separador es nada o no contiene caracteres, espacios en blanco caracteres se supone que son los delimitadores. Los caracteres de espacio en blanco son definidos por el estándar Unicode y devuelven verdadero si se pasan al método Char.IsWhiteSpace.

Llamo ese comportamiento documentado, personalmente. :)

Cuestiones relacionadas