我正在做一个练习,我应该向用户询问一个字符串,然后反转字符串并将其打印到控制台。我写了这个:
Console.WriteLine("Please enter a string of characters: ");
char[] words = Console.ReadLine().ToCharArray();
Console.WriteLine("You entered {0}, the reverse of which is {1}", words.ToString(), words.Reverse().ToString());
这没有用。显然,将 char 数组发送到 .ToString() 会返回“System.Char[]”并将其反转返回“System.Linq.Enumerable+d__a0`1[System.Char]”。
我了解到 .ToString() 无法处理 char 数组,因此我必须使用新的字符串构造函数,所以我将代码重写为它,现在它可以工作了:
Console.WriteLine("Please enter a string of characters: ");
char[] words = Console.ReadLine().ToCharArray();
Console.WriteLine("You entered {0}, the reverse of which is {1}", new string(words), new string(words.Reverse().ToArray()));
我的问题是为什么我不能在字符数组上使用.ToString()? ToString 的摘要含糊地指出“返回一个表示当前对象的字符串”,这对我来说意味着我会得到一个表示我发送给它的 char 数组的字符串。我错过了什么?
最佳答案
虽然我找不到这方面的具体证据(到目前为止)。我相信你不能在 char 数组上使用它作为 Array types are reference types这意味着它们持有对实际值的引用,而不是每个字符的值。如我的评论所述,它返回“System.Char[]”;它返回 default value for ToString
编辑
关于c# - 为什么我不能在 C# 中的 char 数组上使用 .ToString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720544/