2015-07-03 58 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