字符串字符数组

时间:2019-02-10 15:57:35

标签: c# arrays string character

在C#中,字符串已经不是字符数组吗?为什么会有显式的ToCharacterArray函数?当我在寻找反转字符串的方法时,我偶然发现了这个问题,并看到一些答案,先将字符串转换为字符数组,然后再进行循环以反转字符串。我是编码的初学者。

抱歉,这看起来很愚蠢,但我没有通过谷歌搜索得到答案。

5 个答案:

答案 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}} ...尽管内部字符串不再是字符数组。