2011-10-31 11 views

Respuesta

15

Enumerable.All

cierto si cada elemento de la secuencia de origen pasa la prueba en el predicado especificado, o si la secuencia está vacía; de lo contrario, falso.

6

Esto es debido a dos razones:

  1. Como se menciona en la actualización de su edición fantasma, su condición de indexación agarra el segunda entrada en la matriz devuelta por Split (# conteos C a partir de 0)

    var parts = line.Split(new char[] { ':' }); 
    // parts[0] == "name"; 
    // parts[1] == ""; 
    
  2. Enumerable.All<TSource>(...) vuelve true si la secuencia de entrada está vacío

    Valor de retorno

    Tipo: System.Boolean cierto si cada elemento de la secuencia de origen pasa la prueba en el predicado especificado, o si la secuencia está vacía; de lo contrario, falso.

8

Es una expresión vacuously true.

Todos los caracteres son dígitos porque no puede encontrar un contraejemplo. Este código:

return s.All(char.IsDigit); 

es más o menos equivalente a este bucle:

foreach (char c in s) 
{ 
    if (!char.IsDigit(c)) { return false; } 
} 
return true; 

En esta versión reescrita debe quedar claro que si no hay caracteres en la cadena a continuación, nunca serán entraron en el cuerpo del bucle y entonces el resultado es verdad

+1

Voto ascendente para un buen enlace de Wikipedia, nunca supe que tenía un nombre :) –

Cuestiones relacionadas