2012-05-04 32 views
6

Tôi không hiểu tại sao thử nghiệm này sẽ thất bại với Thông báo "Assert.AreEqual không thành công. Dự kiến: < 2>. Thực tế: < 1>."C# Linq Char mảng Ngoại trừ() - Hành vi lạ

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

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

nhưng sau đây sẽ vượt qua:

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

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

Trả lời

3

Ngoại trừ cung cấp cho bạn danh sách riêng biệt.

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

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

Chức năng Except trả phần chênh lệch bộ của hai chuỗi - không phải là sự khác biệt .

Ký tự khoảng trắng chỉ được trả lại một lần.