猿问

“==”总是返回真。字谜程序

我做了一个简单的函数,它通过对排序后的值进行排序和比较来检查两个单词是否是变位词,但是即使单词不是变位词,该程序也始终返回 true。如果我删除 .ToString() 它评估为假。知道为什么要这样做以及有关如何解决此问题的任何想法吗?


public bool anagram(string word1, string word2)

    {

        char[] word1Arr = word1.ToArray();

        char[] word2Arr = word2.ToArray();


        Array.Sort(word1Arr);


        Array.Sort(word2Arr);


        Console.WriteLine(word1Arr);

        Console.WriteLine(word2Arr);


        if (word1Arr.ToString() == word2Arr.ToString())

        {

            return true;

        }

        else

        {

            return false;

        }



    }


慕姐8265434
浏览 241回答 2
2回答

小怪兽爱吃肉

代替if (word1Arr.ToString() == word2Arr.ToString())和if (word1Arr.SequenceEqual(word2Arr))比较数组的内容 - 因为word1Arr.ToString()返回"System.Char[]"和您的比较结果为"System.Char[]" == "System.Char[]"永远是真的

慕斯709654

您还可以使用此比较:if(new string(word1Arr) == new string (word2Arr))ToString方法在char[]返回类型名称时具有默认实现System.Char[],这就是为什么当您比较两个char[].与另一个答案相比:我的方法创建了两个额外的string类实例,而另一个答案在不创建额外对象的情况下比较数组。
随时随地看视频慕课网APP
我要回答