7

このテストが「Assert.AreEqual failed. Expected:<2>. Actual:<1>.」というメッセージで失敗する理由がわかりません。

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

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

しかし、次は合格します:

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

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

4 に答える 4

5

Except は、重複を返さないことを意味するSETを提供します。

ドキュメントを除くを参照してください

于 2012-05-04T13:48:56.207 に答える
4

このExcept関数は、差ではなく、2 つのシーケンスのセット差返します。

空白文字は 1 回だけ返されます。

于 2012-05-04T13:48:55.347 に答える
3

Except は、個別のリストを提供します。

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

Assert.AreEqual(2, a2.Except(a1).Count()); // Passes
于 2012-05-04T13:48:16.457 に答える
3

except は 2 つのシーケンスの違いを見つけるため

http://msdn.microsoft.com/ru-ru/library/system.linq.enumerable.except.aspx

多分あなたはこのようなものが必要です

var c=a2.Where(a=>a1.Contains(a)==false).Count();
于 2012-05-04T13:47:33.340 に答える