C#将char和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数组转换为字符串,但最后两次尝试不起作用。 我找到的其他来源,他们必须创建新的字符串类型,但我不知道为什么。 有人能给我一点解释,谢谢。

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

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

通过str2 = new string(arrayChar);构造一个新字符串str2 = new string(arrayChar); 然而,会给你你想要的行为。

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

 new string(arrayChar); 

有一个字符串构造函数 ,它接受一个char数组 。