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

标签 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 那样简单地显示集合的值,对吗?

最佳答案

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

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

但默认情况下没有您的 java 示例中的功能。

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

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

如果您的集合中的元素已经具有适当的 .ToString()实现(例如 KeyValuePair<TKey, TValue> 正如 Michael LY 指出的那样),您可以跳过 Select部分:

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

关于c# - C# 可以像 Java 一样简单地打印集合值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725016/

相关文章:

c# - 通过直接读取 PE 来确定一个 dll 是否为 .valid CLR dll(64 位问题)

javascript - 调用终止前调用 AJAX 成功

c# - 正则表达式用于匹配两个数字之间的特殊字符

.net - "Peeking Ahead"循环字典项时

C++ 模板与 STL 返回类型相结合

java - 在 Java 中迭代集合时递增值时出现奇怪的错误

javascript - 正确使用调用c#函数的引导开关(T4MVC/Entity Framework)

python - 我正在尝试将类与 python 字典一起使用

java - 从数据库中获取特定列的最新行

c# - 我可以测试两个 ArrayList (C#) 实例的值相等性吗?