【发布时间】:2018-06-06 10:35:08
【问题描述】:
所以,我在一堂介绍 IDictionary 的课程中学习了 C# 在线课程,他们这样做了(用于测试包含字符串和类实例的对):
public static void Main(string[] args)
{
IDictionary<string, Student> Students = new Dictionary<string, Student>();
Students.Add("Ex1", new Student("Example 1", 34672 ));
Students.Add("Ex2", new Student("Example 2", 8787));
foreach (var item in Students)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
public class Student
{
public string v1 { get; set; }
public int v2 { get; set; }
public Student (string v1, int v2)
{
this.v1 = v1;
this.v2 = v2;
}
}
应该显示pair的内容
[Ex1, {Example 1, 34672}]
但相反,它向我展示了:
[Ex1, ConsoleApp1.Program+Student]
这是视频的直接副本,所以我认为这可能是 .NET 框架版本的一些差异,但不是。只是去看看我是不是疯了。我可以使用 item.Value.v1 获取值,但这需要在现实生活中的实例上做太多工作,因为我必须遍历该对象内的所有值。
【问题讨论】:
-
您可以在
Student类中覆盖.ToString()。否则,对象的默认字符串表示是它的类名。 -
谢谢,大卫。我知道有些事情没有加起来。讲师正在编译并获得正确的显示,没有任何覆盖。希望我可以将您的评论标记为答案,因为您是第一个提供此解决方案(有效)的人。
-
Sebastian 的答案应该被标记为答案,因为他是第一个用答案而不是评论做出回应的人。非常不言自明的系统。
-
是的。我知道系统是如何工作的,但尽管如此.. 大卫确实比塞巴斯蒂安早 2 分钟提供了答案。他只是没有发布任何代码。我只是感谢他是第一个。顺便说一句,我可以选择你的或 Rawita 的,因为你们都不仅提供了代码,还提供了背后的原因。所以,谢谢大家。
标签: c# idictionary