2011-10-31 18 views

Odpowiedz

15

Enumerable.All

prawdziwe, jeśli każdy element sekwencji źródłowej przechodzi test w określonym orzecznikiem lub jeśli sekwencja jest pusty; w przeciwnym razie false.

6

Wynika to z dwóch powodów:

  1. Jak wspomniano w phantom aktualizacji edycji, Twój stan indeksowania chwyta drugą wpis w tablicy zwróconej przez Split (C# liczy począwszy od 0)

    var parts = line.Split(new char[] { ':' }); 
    // parts[0] == "name"; 
    // parts[1] == ""; 
    
  2. Enumerable.All<TSource>(...) powraca true jeżeli sekwencja wejściowa jest pusty

    Return Value

    Typ: System.Boolean true, jeśli każdy element sekwencji źródłowej przechodzi test w określonym orzecznika lub jeśli sekwencja jest pusta; w przeciwnym razie false.

8

To wyrażenie vacuously true.

Wszystkie znaki są cyframi, ponieważ nie można znaleźć kontrprzykładu. Ten kod:

return s.All(char.IsDigit); 

jest z grubsza odpowiednikiem tej pętli:

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

W tym przepisany wersji powinno być jasne, że jeśli nie ma żadnych znaków w ciąg następnie ciało pętla nigdy nie zostanie wprowadzony i więc wynik jest prawdziwy.

+1

Awans na dobry link do Wikipedii, nigdy nie wiedziałem, że ma imię :) –

Powiązane problemy