我想知道为什么我们不能仅使用ToString()将IEnumerable转换为字符串!我的意思是这背后的根本原因是什么。 Microsoft文档说“ ToString()返回表示当前对象的字符串”。这是字符串是什么?它是对象的特殊属性吗?为什么int.ToString()有效但IEnumerable.ToString()不起作用?
答案 0 :(得分:2)
IEnumerable<char>
不一定是string
。假设您有某种服务返回了无数个字符(例如流)。由于该流没有尽头,并且数据不断流动,因此您无法调用ToString
并从中实现string
。
但是ToString
仅返回对象的表示形式,而不是其 data 的表示形式。例如,在数组的情况下, object 是项目的集合,或更一般地说,只是容器。您期望的是该容器中包含的数据。
例如,当致电myArray.Totring
时,您不会得到{ 1, 2, 3 }
,而只是得到System.int[]
。如果没有覆盖类型,则ToString
会返回以下内容:类型名称。在您的情况下也会发生同样的情况:没有为ToString
或char[]
或其他定义的List<char>
改写,因此该方法退回到了使用typeofObject.FullName
的地方。