C#->;string.Reverse();-不要在#使用System.Linq;

C#->;string.Reverse();-不要在#使用System.Linq;,c#,C#,这个程序没有按预期工作,我不知道为什么。错误是CS0266“ 错误CS0266无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“string”。存在显式转换(是否缺少转换? 但是,, 它应该在使用系统的情况下正常工作 using System; using System.Linq; namespace centuryyearsminutes { class Program { static void Main(s

这个程序没有按预期工作,我不知道为什么。错误是
CS0266“
错误CS0266无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“string”。存在显式转换(是否缺少转换?

但是,, 它应该在使用系统的情况下正常工作

using System;
using System.Linq;
namespace centuryyearsminutes
{
    class Program
    {
        static void Main(string[] args)
        {
            string aa = "Hello World!";
            string bb = aa.Reverse();
            Console.WriteLine(bb);
        }
    }
}
aa.Reverse()只返回可枚举的

尝试:

尽管这可能是最好的方法:
.Reverse()
需要的是字符()的集合,而不是字符串。如果需要:

string aa = "Hello World!";

var result = aa.ToCharArray().Reverse();

Console.WriteLine(new string(result.ToArray()));
输出为
!dlroW olleH


这应该可以正常工作。

Linq的Reverse将字符串视为字符数组,并返回字符集合,而不是字符串。编译器告诉您a)string的返回值。Reverse()不是字符串,而是
IEnumerable
(数组的一个特殊用例).b)它找不到
IEnumerable
string
之间的任何隐式转换。请注意,在很多情况下,逐字符反转字符串会产生错误的结果。这是否回答了您的问题?如果您想指出答案中的错误,请随时发表评论,并让我知道如何导入rove——在这里,没有任何解释的下推并不能帮助我理解太多:(没有必要使用ToCharray(这会创建一个新的不必要的数组),也没有需要IEnumerable的字符串构造函数。下推可能是因为您的代码无法编译(尽管它不是我的代码),我错过了一个
.ToArray()
new string()
调用进行强制转换。代码编译并生成一个反向字符串。现在可以。您发布的代码总是值得测试的。不过,ToCharArray仍然是不必要的。
string aa = "Hello World!";

var result = aa.ToCharArray().Reverse();

Console.WriteLine(new string(result.ToArray()));