为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕姐8265434 2021-10-24 19:31:26
我做了一个简单的函数,它通过对排序后的值进行排序和比较来检查两个单词是否是变位词,但是即使单词不是变位词,该程序也始终返回 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;        }    }
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

代替

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

if (word1Arr.SequenceEqual(word2Arr))

比较数组的内容 - 因为word1Arr.ToString()返回"System.Char[]"和您的比较结果为

"System.Char[]" == "System.Char[]"

永远是真的


查看完整回答
反对 回复 2021-10-24
?
慕斯709654

TA贡献1840条经验 获得超5个赞

您还可以使用此比较:

if(new string(word1Arr) == new string (word2Arr))

ToString方法在char[]返回类型名称时具有默认实现System.Char[],这就是为什么当您比较两个char[].

与另一个答案相比:我的方法创建了两个额外的string类实例,而另一个答案在不创建额外对象的情况下比较数组。


查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 230 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信