为什么C#List<>
的{{1}}方法没有提供合理的字符串表示形式来打印其内容?当我尝试打印ToString
对象时,我得到了类名(我假设它是默认的object.ToString
实现)。为什么会这样?
答案 0 :(得分:54)
简单的答案是:这就是它的方式,我很害怕。
同样,List<T>
不会覆盖GetHashCode
或Equals
。请注意,除了调用简单的ToString
本身,或者用逗号分隔值之外,它的格式化方式很少。
如果需要,您可以随时编写自己的扩展方法来执行适当的格式化,或者使用string.Join
的较新重载,这使得它非常简单:
string text = string.Join(",", list);
答案 1 :(得分:4)
我认为原因是,目前还不清楚应该做些什么。
也许对任何人进行ToString并将他们与昏迷分开?但是,如果有人想要分号怎么办?还是破灭?或者有人想将整个字符串括在卷曲或普通的braclets中?或者somone想要使用不同的函数来获得单个元素的文本表示?
很少有注意事项:ToString只能用于debuging purpouses。如果要将数据导出为字符串,请在类中覆盖此行为,或为其创建实用程序类。
List也用于存储元素,而不是提供文本表示。
答案 2 :(得分:1)
因为它可能不那么容易实现。
List<>
可以包含很多内容。例如,包含List<>
的另一个Dictionary<>
包含复杂对象......