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()));