Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#可以像Java那样简单地打印集合值吗?_C#_Dictionary_Collections - Fatal编程技术网

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

C#可以像Java那样简单地打印集合值吗?,c#,dictionary,collections,C#,Dictionary,Collections,在Java中,我可以打印集合的值,只需将集合传递到输出: Map<Integer, String> map = new HashMap<Integer, String>(){ { put(1, "one"); put(2, "two"); } }; System.out.println(map); 在C#中,类似的代码会给我有关集合类型的信息,而不是其中的值,

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

Map<Integer, String> map = new HashMap<Integer, String>(){
            {
                put(1, "one");
                put(2, "two");
            }
};
System.out.println(map);
在C#中,类似的代码会给我有关集合类型的信息,而不是其中的值,我一直在寻找它,但正如我在C#中所理解的,您必须解决从集合中获取值输出的问题。
正如我对C#的理解,您不能像使用Java那样简单地显示集合的值,对吗

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

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

但是默认情况下,没有java示例中的功能

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

Console.WriteLine("{" + string.Join(", ", map.Select(m => $"{m.Key}={m.Value}")) + "}");
如果集合中的元素已具有适当的
.ToString()
实现(如Michael LY指出的
KeyValuePair
),则可以跳过
选择部分:

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

我发现这个答案更优雅:var asString=string.Join(“;”,dictionary)@MickaelLY是thx,因此
KeyValuePair
.ToString()
显然得到了实现。现有建议(不进行Java比较)-字典/哈希集-任何元素类型的任何类型集合-
Console.WriteLine("{" + string.Join(", ", map) + "}");