C#将char和char数组分配给字符串?

时间:2010-04-12 17:49:53

标签: c# string arrays char

        char character = 'c';
        string str = null;
        str = character.ToString();//this is ok

        char[] arrayChar = { 'a', 'b', 'c', 'd' };
        string str2 = null;
        str2 = string.Copy(arrayChar.ToString());//this is not ok
        str2 = arrayChar.ToString();//this is not ok.

我正在尝试将char数组转换为字符串,但最后两次尝试不起作用。我找到的其他来源,他们必须创建新的字符串类型,但我不知道为什么。有人可以给我一点解释,谢谢。

3 个答案:

答案 0 :(得分:26)

您需要构建一个新字符串。

执行arrayChar.ToString()调用char[]类型的“ToString”方法,该方法不会重载以构造字符串,而是构造一个字符串,指定类型是数组的人物。这不会给你你想要的行为。

然而,通过str2 = new string(arrayChar);构建一个新字符串将为您提供所需的行为。

问题在于,在C#中(与C ++不同),字符串与字符数组不同。这是两种截然不同的类型(即使它们可以表示相同的数据)。字符串可以枚举为字符(String实现IEnumerable<Char>),但就CLR而言,它不是与字符相同的类型。进行转换需要代码在两者之间进行转换 - 而字符串构造函数提供了这种机制。

答案 1 :(得分:8)

new string(arrayChar);

答案 2 :(得分:0)