Итак, я проходил онлайн-курс C# в классе, посвященном IDictionary, где они сделали это (для тестирования пар, содержащих строку и экземпляр класса):
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;
}
}
Он должен отображать содержимое пары
[Ex1, {Example 1, 34672}]
но вместо этого он показывает мне:
[Ex1, ConsoleApp1.Program+Student]
Это прямая копия из видео, поэтому я подумал, что это могут быть какие-то отличия в версии .NET framework, но нет. Просто направился к SO, чтобы посмотреть, не схожу ли я с ума. Я мог бы получить значения, используя item.Value.v1, но это потребовало бы слишком много работы с реальными экземплярами, так как мне пришлось бы перебирать все значения внутри этого объекта.
.ToString()
в классеStudent
. В противном случае строковым представлением объекта по умолчанию является его имя класса. - person David   schedule 06.06.2018