首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#可以像Java一样简单地打印集合值吗?

C#可以像Java一样简单地打印集合值吗?
EN

Stack Overflow用户
提问于 2016-08-02 23:43:35
回答 1查看 2.4K关注 0票数 3

在Java中,我可以打印集合值,只需将集合传递给输出:

代码语言:javascript
复制
Map<Integer, String> map = new HashMap<Integer, String>(){
            {
                put(1, "one");
                put(2, "two");
            }
};
System.out.println(map);

输出:

代码语言:javascript
复制
{1=one, 2=two}

在C#中,类似的代码会给我关于集合类型的信息,而不是里面的值,我一直在寻找它,但据我所知,在C#中,你必须解决从集合中获得值的输出。据我所知,使用C#不能像使用Java那样简单地显示集合值,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 23:47:39

当向Console.WriteLine()传递任何类型的对象时,将调用该对象的ToString()方法将其转换为可打印的字符串。

ToString()的默认实现返回类型名称。某些集合重写了返回字符串的ToString()实现,该字符串包含集合中元素的数量等信息。

但是缺省情况下没有java示例中那样的功能。

获得这样的输出的一个简单方法是使用string.Join和一些LINQ:

代码语言:javascript
复制
Console.WriteLine("{" + string.Join(", ", map.Select(m => $"{m.Key}={m.Value}")) + "}");

如果你的集合中的元素已经有了正确的.ToString()实现(比如Michael LY指出的KeyValuePair<TKey, TValue> ),你可以跳过Select部分:

代码语言:javascript
复制
Console.WriteLine("{" + string.Join(", ", map) + "}");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38725016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档