Объявление класса как члена самого себя
Я недавно работал в Microsoft.Ink dll, используя C #, и отлаживал проблему (которая не связана с этим). Я заметил, что при отладке у чернильных объектов был объект обводки, в котором был чернильный объект. .... и т.д.
Это смутило меня, так как я полагал, что вы не можете этого сделать (я из C ++ Background)
Но я проигнорировал это, решил проблему и пошел дальше. Сегодня я сталкиваюсь с подобной проблемой, когда смотрю на класс с закрытым членом, который был того же класса, что и он сам.
public sealed class Factory
{
private static Factory instance = new Factory();
}
Как это вообще возможно? Теперь я могу назвать instance.instance.instance.instance ... и т. Д. Это, как вы можете себе представить, вредит моему смертному мозгу, и я уверен, что это не может быть хорошо и на компьютере. Как компилятор справляется с этим? И насколько глубоко заходит кроличья нора?