比较C#中的两个数组



我是C#的新手,只是比较两个数组。。。两个数组应该相等,因为它们的值是相同的,但结果总是错误的。。。不知道为什么。

char[] arOne =  { 'a', 'b', 'c', 'u0000' };
char[] arTwo = new char[] { 'a', 'b', 'c', 'u0000' };
Console.WriteLine(" Two arrays are equal ? ...{0}", (arOne == arTwo) ? "true" : "false");

尝试使用此

Enumerable.SequenceEqual方法(IEnumerable,IEnumeraable)

bool areEqual = arOne.SequenceEqual(arTwo);

您正在做的是比较对象引用,而不是比较集合的实际内容。

使用此代码:

Console.WriteLine("Two arrays are equal? ...{0}", arOne.Intersect(arTwo).Any() ? "true" : "false");

==运算符只比较引用,如果它们不相同,则返回false。您可以使用SequenceEqual:

bool bothSameChars = arOne.SequenceEqual(arTwo);

SequenceEqual也考虑了顺序,如果这无关紧要,你可以使用HashSet<Char>,这是非常有效的SetEquals方法:

HashSet<Char> charset1 = new HashSet<Char>(arOne);
HashSet<Char> charset2 = new HashSet<Char>(arTwo);
bothSameChars = charset1.SetEquals(charset2);

考虑以下代码。。。

Console.WriteLine(" Two arrays are equal ? ...{0}", Enumerable.SequenceEqual(arOne, arTwo) ? "true" : "false");

祝你好运!

您当前正在检查REFERENCE到两个对象,并检查它们是否相等,但它们显然不相等。你想做的是检查他们的内容和序列是否相等,为此他们发明了令人敬畏的函数.SequenceEqual()。您的代码将类似

char[] arOne = { 'a', 'b', 'c', 'u0000' };
char[] arTwo = new char[] { 'a', b', 'c', 'u0000' };
Console.WriteLine(" Two arrays are equal ? ... {0}", (arOne.SequenceEqual(arTwo)));

因为SequenceEqual()已经返回布尔值,所以您甚至不必再添加? "true" : false"

相关内容

  • 没有找到相关文章

最新更新