Сегодня, решая одну из задач, у меня получилось структура и код, которые являются наглядным примером того, почему стоит знать о том как устроен тот или иной язык программирования.
Честно говоря, я не сразу понял почему я получаю не тот результат, который ожидаю. Пришлось немного подумать и решение проблемы долго себя ждать не заставило. Ниже я представлю упращенную версию моего кода. А вы постарайтесь ответить на два вопроса: «что будет находится в переменной a» и «почему»?
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { struct A { public struct B { public List<int> Numbers { get; private set; } public void Add(int n) { if (this.Numbers == null) { this.Numbers = new List<int>(); } this.Numbers.Add(n); } } public List<B> Columns; } class Program { static void Main(string[] args) { A a = new A(); a.Columns = new List<A.B>(); a.Columns.Add(new A.B()); a.Columns[0].Add(1); a.Columns[0].Add(2); a.Columns[0].Add(3); Console.ReadKey(); } } }
Чуть позже я опубликую пояснения к данной программе. Все свои предположения можете оставлять в комментариях.