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

时间:2016-08-02 15:43:35

标签: c# dictionary collections

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

Map<Integer, String> map = new HashMap<Integer, String>(){
            {
                put(1, "one");
                put(2, "two");
            }
};
System.out.println(map);

输出:

{1=one, 2=two}

在C#中类似的代码会给我关于集合类型的信息,而不是内部的值,我一直在寻找它,但正如我在C#中所理解的那样,你必须努力从集合中获取值的输出。 正如我对C#所理解的那样,你不能像使用Java一样简单地显示集合的值,对吗?

1 个答案:

答案 0 :(得分:0)

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

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

但默认情况下,没有像java示例中那样的功能。

获得此类输出的一种简单方法是使用string.Join和一些LINQ:

Console.WriteLine("{" + string.Join(", ", map.Select(m => $"{m.Key}={m.Value}")) + "}");

如果您的收藏集中的元素已经有正确的.ToString()实施(例如,像Michael LY指出的KeyValuePair<TKey, TValue>),您可以跳过Select部分:

Console.WriteLine("{" + string.Join(", ", map) + "}");