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

Bop*_*pha 12 c# arrays string 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.
Run Code Online (Sandbox Code Playgroud)

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

Ree*_*sey 27

您需要构造一个新字符串.

arrayChar.ToString()呼叫的所述"的ToString"方法char[]的类型,其被未过载来构造字符串出的字符,而是构造一个字符串,它指定该类型是字符数组.这不会给你你想要的行为.

str2 = new string(arrayChar);但是,通过构造一个新字符串将为您提供所需的行为.

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