Сегодня, решая одну из задач, у меня получилось структура и код, которые являются наглядным примером того, почему стоит знать о том как устроен тот или иной язык программирования.
Честно говоря, я не сразу понял почему я получаю не тот результат, который ожидаю. Пришлось немного подумать и решение проблемы долго себя ждать не заставило. Ниже я представлю упращенную версию моего кода. А вы постарайтесь ответить на два вопроса: «что будет находится в переменной 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();
}
}
}
Чуть позже я опубликую пояснения к данной программе. Все свои предположения можете оставлять в комментариях.