@JonSkeet, что происходит, когда одна из захваченных переменных является полем класса, а другая - нет? Указывает ли анонимный метод на поле этого экземпляра? Этот экземпляр как-то передается в сгенерированный класс? И еще один вопрос - возможно ли, что компилятор не знает, какие анонимные методы разделяют захваченную переменную?
ел бесчисленные посты о том, как захват переменных тянет переменные для создания замыкания, однако, похоже, что все они не дотягивают до конкретных деталей и называют все это «магией компилятора».
Я ищу четкое объяснение:
Как локальные переменныефактически захватили.Разница (если есть) между типами значений захвата и ссылочными типами.И существует ли какой-либо бокс, происходящий в отношении типов значений.Я предпочел бы получить ответ с точки зрения ценностей и указателей (ближе к сути того, что происходит внутри), хотя я приму четкий ответ, включающий также значения и ссылки.