为什么IEnumerable <char> .ToString()不起作用?

时间:2018-09-24 11:38:53

标签: c# ienumerable tostring

我想知道为什么我们不能仅使用ToString()将IEnumerable转换为字符串!我的意思是这背后的根本原因是什么。 Microsoft文档说“ ToString()返回表示当前对象的字符串”。这是字符串是什么?它是对象的特殊属性吗?为什么int.ToString()有效但IEnumerable.ToString()不起作用?

1 个答案:

答案 0 :(得分:2)

IEnumerable<char>不一定是string。假设您有某种服务返回了无数个字符(例如流)。由于该流没有尽头,并且数据不断流动,因此您无法调用ToString并从中实现string

但是ToString仅返回对象的表示形式,而不是其 data 的表示形式。例如,在数组的情况下, object 是项目的集合,或更一般地说,只是容器。您期望的是该容器中包含的数据

例如,当致电myArray.Totring时,您不会得到{ 1, 2, 3 },而只是得到System.int[]。如果没有覆盖类型,则ToString会返回以下内容:类型名称。在您的情况下也会发生同样的情况:没有为ToStringchar[]或其他定义的List<char>改写,因此该方法退回到了使用typeofObject.FullName的地方。