2015-07-03 74 views
0

我想比较两个字符数组,以查看它们的内容是否是回文。数组比较永不等于真

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

问题是,此方法永远不会返回true。即使阵列包含回文。

这里有什么问题?


编辑:

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

Enumerable.SequenceEqual(normal,reversed);

+3

数组的比较是引用类型,所以通过引用(即他们在同一个对象),'normal'和'逆转相比, '是不同的物体,所以不匹配。 –

+0

数组是c#中的引用类型。您无法将内容与==符号进行比较。 – Dave3of5

+0

http://stackoverflow.com/questions/4423318/how-to-compare-arrays-in-c,http://stackoverflow.com/questions/14960191/in-c-why-equals-method-on-arrays -only-compare-their-references-not-their-ac,等等。在网上搜索“C#比较数组”或查看重复内容。 – CodeCaster

回答

3

您正在比较两个数组,而不是数组的内容。所以基本上你要比较两个记忆位置,并问“他们是否一样?”。

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

为了完整结账这个问题回答如何实现你的目标为Easiest way to compare arrays in C#

+0

我如何轻松比较其内容? –

+0

@GustavBlomqvistGurra检出某人在近距离投票中的答案。应该解释如何去做。 – Ian

+0

@DavidArno - 顺便说一句,我会在编辑之前进行比赛,这是一个答案......在我正在阐述的时候,只有很短的一个。 – Ian