在C#中,字符串已经不是字符数组吗?为什么会有显式的ToCharacterArray
函数?当我在寻找反转字符串的方法时,我偶然发现了这个问题,并看到一些答案,先将字符串转换为字符数组,然后再进行循环以反转字符串。我是编码的初学者。
抱歉,这看起来很愚蠢,但我没有通过谷歌搜索得到答案。
答案 0 :(得分:2)
字符串不是C#中的字符数组吗?
底层实现是。
但是您不能直接访问它。 String
正在使用封装作为不可变对象。
实际数组为private
,并且从视图中隐藏。您可以使用索引器(属性)来读取字符,但是不能更改它们。索引器是只读的。
是的,您确实需要ToCharacterArray()
来执行反向操作和类似操作。请注意,您总是以不同的字符串结尾,不能更改原始字符串。
答案 1 :(得分:0)
是,字符串类型是一个字符数组,但字符串数组不是一个字符数组,您必须必须将数组中的每个字符串转换为char类型,以便您可以轻松地反转其索引,然后将其转换为临时字符串,然后添加要反转的数组字符串
答案 2 :(得分:0)
在内部,文本存储为Char对象的顺序只读集合。
请参见编程指南Docs
答案 3 :(得分:0)
Console.WriteLine(StringHelper.ReverseString("framework"));
Console.WriteLine(StringHelper.ReverseString("samuel"));
Console.WriteLine(StringHelper.ReverseString("example string"));
OR
public static string ReverseString(string s)
{
char[] arr = s.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
答案 4 :(得分:0)
字符串不是C#中的字符数组吗?
否,字符串是 CLASS ,它封装了“字符的顺序集合”(请参见Docs)。请注意,它没有明确地说出“字符数组”。现在,可能确实是字符串类当前使用字符数组来完成此操作,但这并不意味着它必须使用字符数组来达到此目的。这是面向对象编程的基本概念,它结合了information hiding和“黑匣子”的作用。黑匣子(类)如何在后台完成其任务并不重要,只要它不更改呈现给最终用户的公共界面即可。也许,在.Net的下一版本中,将使用一些不是字符数组的新型魔术结构来实现字符串类。最终用户可能甚至不知道此更改已经发生,因为他们仍然可以以相同的方式使用字符串类,如果需要,和仍可以将字符输出到带有{{ 1}} ...尽管内部字符串不再是字符数组。