【发布时间】:2017-05-24 20:46:15
【问题描述】:
...当我在 C# 中尝试这个时:
string reversedName;
reversedName = name.ToCharArray().Reverse().ToArray();
但当我尝试这个时不是:
string reversedName = new string (name.ToCharArray().Reverse().ToArray());
?当我尝试在第一个方法的末尾添加链接 To.String() 时,运行时不会抛出异常而是返回:System.Char[]
我正在寻找关于为什么编译器似乎无法将 char[] 隐式转换为字符串的解释:
* 除非显然调用new string,
* 即使我们将ToString() 函数链接到那里。
【问题讨论】:
-
char[]和string是不同的类型... C# 不是 C/C++ -
因为字符串不是 C# 中的字符数组。编译器似乎不能,因为它没有意义。保持语言简洁。
-
显然第二个例子是一个构造函数。所以你知道为什么它是正确的吗?为什么 C# 团队不从 char[] 进行隐式运算符转换?可能是因为他们有一个构造函数,通常隐式转换不是你想要的。
-
@aquinas 好的,这是一个很好的解释(对于 C# 菜鸟),我的收获:构造函数和普通赋值的可转换性不同标准,是的,这是有道理的。
标签: c# string linq type-conversion