关于C#的`List<> .ToString`的问题

时间:2011-02-19 11:24:44

标签: c# list

为什么C#List<>的{​​{1}}方法没有提供合理的字符串表示形式来打印其内容?当我尝试打印ToString对象时,我得到了类名(我假设它是默认的object.ToString实现)。为什么会这样?

3 个答案:

答案 0 :(得分:54)

简单的答案是:这就是它的方式,我很害怕。

同样,List<T>不会覆盖GetHashCodeEquals。请注意,除了调用简单的ToString本身,或者用逗号分隔值之外,它的格式化方式很少。

如果需要,您可以随时编写自己的扩展方法来执行适当的格式化,或者使用string.Join的较新重载,这使得它非常简单:

string text = string.Join(",", list);

答案 1 :(得分:4)

我认为原因是,目前还不清楚应该做些什么。

也许对任何人进行ToString并将他们与昏迷分开?但是,如果有人想要分号怎么办?还是破灭?或者有人想将整个字符串括在卷曲或普通的braclets中?或者somone想要使用不同的函数来获得单个元素的文本表示?

很少有注意事项:ToString只能用于debuging purpouses。如果要将数据导出为字符串,请在类中覆盖此行为,或为其创建实用程序类。

List也用于存储元素,而不是提供文本表示。

答案 2 :(得分:1)

因为它可能不那么容易实现。

List<>可以包含很多内容。例如,包含List<>的另一个Dictionary<>包含复杂对象......