有关C#的List <>。ToString的问题

为什么C#List<>ToString方法不能提供打印其内容的明智的字符串表示形式? 当我尝试打印List<>对象时,我得到了类名(我假设它是默认的object.ToString实现)。 为什么呢?

missingfaktor asked 2020-08-09T05:57:23Z
3个解决方案
59 votes

简单的答案是:恐怕就是这样。

同样,string.Join不会覆盖GetHashCodeEquals。请注意,除了调用简单的ToString本身(可能用逗号分隔值)之外,它几乎没有其他令人愉快的格式设置方式。

如果需要,您总是可以编写自己的扩展方法来执行适当的格式设置,或者使用string.Join的较新的重载使其非常简单:

string text = string.Join(",", list);
Jon Skeet answered 2020-08-09T05:57:38Z
4 votes

我认为原因是,目前尚不清楚该怎么做。

也许在Toele上使用ToString并用逗号分隔它们? 但是,如果有人想要分号怎么办? 或破折号? 还是有人想将整个字符串括在卷曲或普通的手镯中? 还是somone想使用不同的功能来获取单个元素的文本表示形式?

需要注意的几件事:ToString仅应用于调试目的。 如果要将数据导出为字符串,请在您的类中重写此行为或为其创建实用程序类。

List也旨在存储元素,而不提供其文本表示形式。

Euphoric answered 2020-08-09T05:58:12Z
2 votes

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

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

gsharp answered 2020-08-09T05:58:39Z
translate from https://stackoverflow.com:/questions/5050507/question-regarding-cs-list-tostring