请使用以下代码:
public static string ReverseIt(string myString)
{
char[] foo = myString.ToCharArray();
Array.Reverse(foo);
return new string(foo);
}
Run Code Online (Sandbox Code Playgroud)
我理解字符串是不可变的,但我不明白为什么需要调用新的字符串
return new string(foo);
Run Code Online (Sandbox Code Playgroud)
代替
return foo.ToString();
Run Code Online (Sandbox Code Playgroud)
我必须假设它与重新组装CharArray有关(但这只是猜测).
这两者之间有什么区别,你怎么知道何时返回一个新字符串而不是返回一个表示当前对象的System.String?
很简单,因为在char数组上调用ToString()会给你
System.Char []
尝试
char[] ca = "Hello world".ToCharArray();
Console.WriteLine("{0}", ca);
Run Code Online (Sandbox Code Playgroud)
你没有得到 Hello World
同时调用Array.Reverse来反转字符串是一个坏主意,Tony和Jon在他们的 - 现在着名的 - Stack Overflow Presentation中提到它