2012-05-04 62 views
6

Nie rozumiem, dlaczego ten test zakończył się niepowodzeniem z wiadomością "Błąd Assert.AreEqual. Oczekiwano: < 2>. Rzeczywiste: < 1>."C# Linq Char tablice Z wyjątkiem() - Dziwne zachowanie

 [TestMethod] 
     public void Test() 
     { 
      char[] a1 = "abc".ToCharArray(); 
      char[] a2 = {'a', 'b', 'c', ' ', ' '}; 

      Assert.AreEqual(2, a2.Except(a1).Count()); 
     } 

ale dodaje minie:

 [TestMethod] 
     public void Test() 
     { 
      char[] a1 = "abc".ToCharArray(); 
      char[] a2 = {'a', 'b', 'c', ' ', 'd', ' '}; 

      Assert.AreEqual(2, a2.Except(a1).Count()); 
     } 

Odpowiedz

3

Z wyjątkiem daje wyraźną listę.

char[] a1 = "abc".ToCharArray(); 
char[] a2 = {'a', 'b', 'c', ' ', '1'}; 

Assert.AreEqual(2, a2.Except(a1).Count()); // Passes 
3

Funkcja Except zwraca zadanej różnicy z dwóch sekwencji - nie różnicę.

Znak spacji jest zwracany tylko raz.