返回新字符串vs .ToString()

Ler*_*ins 6 c# arrays string

请使用以下代码:

    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?

Bin*_*ier 6

很简单,因为在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中提到它