数组比较永远不等于true

时间:2015-07-03 12:59:53

标签: c#

我想比较两个char数组,看它们的内容是否是回文。

static bool isPalindrome(string s)
        {
            char[] normal = s.ToCharArray();
            char[] reversed = s.ToCharArray();
            Array.Reverse(reversed);
            return (normal == reversed) ? true : false;
        }

问题是这个方法永远不会返回true。即使数组包含回文。

这里有什么问题?

编辑:

答案:数组是参考类型。我比较了参考,而不是内容。

  

Enumerable.SequenceEqual(normal,reversed);

1 个答案:

答案 0 :(得分:3)

您将两个阵列进行比较,而不是数组的内容。所以基本上你要比较两个内存位置并询问"它们是否相同?"。

想想这样,你有2个桶,你把一套袜子放在一个桶里,另一个放在另一个桶里。这2个桶是否相同?不......尽管他们的内容可能是。

为了完整性检查此问题,请回答如何实现您针对Easiest way to compare arrays in C#

的比较