Вложенные анонимные типы? - C#
Формулировка задачи:
Всем привет, имеется вот такой пример:
Как видно, в данном примере - один анонимный тип вкладывается в другой. Я понял, что это можно изобразить примерно так: см вложение
Также как я понял, когда я создаю анонимный тип, Visual Studio создает новый класс и новый класс создается когда компилятор встречает новый анонимный тип. Новизна определяется путем сравнения имен свойств, их порядка и типов.
И получается, что когда я создаю новый анонимный тип, то Visual Studio порождает (примерно) следующий класс:
Но если у меня один анонимный тип вложен в другой, то эти порожденные классы будут Nested классами ли нет?
class Program { static void Main() { var instance = new { Name = "Alex", Age = 27 }; Console.WriteLine("Name = {0}, Age = {1}", instance.Name, instance.Age); Type type = instance.GetType(); Console.WriteLine(type.ToString()); // Delay. Console.ReadKey(); } }
[DebuggerDisplay("{ x = {x}, y = {y} }", Type = "<Anonymous Type>")] public sealed class Anonymous<TX, TY> { private readonly TX field_x; private readonly TY field_y; public TX x { get { return field_x; } } public TY y { get { return field_y; } } [DebuggerHidden] public Anonymous(PX x, PY y) { field_x = x; field_y = y; } public override bool Equals(object value) { /* тут имплементация */ } public override int GetHashCode() { /* тут имплементация */ } public override string ToString() { /* тут имплементация */ } }
Решение задачи: «Вложенные анонимные типы?»
textual
Листинг программы
class Program { static void Main() { // Анонимные типы в анонимных типах. var instance = new { Name = "Alex", Age = 27, Id = new { Number = 123 } }; Console.WriteLine("Name = {0}, Age = {1}, Id = {2}", instance.Name, instance.Age, instance.Id.Number); // Delay. Console.ReadKey(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д