Я понимаю, как в закрытиях C# разрешен доступ к закрытым переменным, объявленным в той же области, что и анонимный метод, поэтому эти переменные доступны, когда метод вызывается в другой области.Закрытие доступа к частному конструктору в C#
А как насчет частных конструкторов? Этот код работает:
class Program
{
static void Main(string[] args)
{
var someClassFactory = SomeClass.GetFactoryMethod();
var someclass = someClassFactory();
}
}
class SomeClass
{
private SomeClass()
{
}
public static Func<SomeClass> GetFactoryMethod()
{
return() => new SomeClass();
}
}
Как компилятор создает класс для закрытия, как она тогда ссылаться на закрытый конструктор, или иначе позволяют ему получить доступ, когда анонимный метод вызывается кодом клиента?
Я не думаю, что это не имеет ничего делать с закрытием. Это просто вызов метода. – CriketerOnSO
@CriketerOnSO Вопрос о том, как замыкание транслируется в вызов метода. – Servy