C# 创建回文程序时出现逻辑错误

C# 创建回文程序时出现逻辑错误,c#,C#,我试图使回文程序尽可能小。然而,这个程序给出了逻辑错误。当我输入回文字符串时,结果是“False”,这与预期相反 char[] phrase; Console.WriteLine((phrase = Console.ReadLine().ToArray())==phrase.Reverse().ToArray()); Console.ReadLine(); 我不想增加此程序的语句数。在.NET中,数组没有重载的相等运算符。使用可枚举。SequenceEquals 更彻底地阅读代码,会使事情变得

我试图使回文程序尽可能小。然而,这个程序给出了逻辑错误。当我输入回文字符串时,结果是“False”,这与预期相反

char[] phrase;
Console.WriteLine((phrase = Console.ReadLine().ToArray())==phrase.Reverse().ToArray());
Console.ReadLine();

我不想增加此程序的语句数。

在.NET中,数组没有重载的相等运算符。使用
可枚举。SequenceEquals

更彻底地阅读代码,会使事情变得更加复杂

    string phrase = Console.ReadLine();
    var reversedPhrase = phrase.Reverse(); //Type is IEnumerable<char>
    Console.WriteLine(phrase.SequenceEquals(reversedPhrase));
string-phrase=Console.ReadLine();
var reversedPhrase=phrase.Reverse()//类型是IEnumerable
Console.WriteLine(短语.SequenceEquals(反向短语));

我建议你不要像以前那样在表情中隐藏副作用。该代码很可能是一个测试问题,看看学生是否能解决它。

因为您创建了两个不同的数组,并且数组是引用类型,
==
检查引用相等,而不是值

您可以使用返回的

如果两个源序列的长度相等,且它们的 根据默认相等性,相应的元素相等 其类型的比较器


如果你想通过数组来实现,那么你可以试试这个

char[] phrase;
Console.WriteLine(phrase = Console.ReadLine().ToArray().SequenceEqual(phrase.Reverse().ToArray()));
Console.ReadLine();

正如usr所说的使用

这几乎肯定是一个测试问题。@usr您的答案不正确,回文字符串仍然为False。我已经解决了这个问题SequenceEqual@usr不,伙计,
string.Reverse()
返回“System.Linq.Enumerable+。我已经通过EnumerableSequence解决了它,它工作得非常完美。无论如何,谢谢你的帮助..嗯,string似乎没有反向方法。我从哪里得到这个想法的。不管它是什么,伙计。。
char[] phrase;
Console.WriteLine(phrase = Console.ReadLine().ToArray().SequenceEqual(phrase.Reverse().ToArray()));
Console.ReadLine();