간단히 말해 클래스의 정적 필드 초기화를 지연시키는 방법이 있는지 알고 싶습니다.정적 클래스 - 지연 필드 초기화
다른 값이 설정 될 때까지 특정 클래스의 인스턴스를 만들 수 없습니다. 예 :
다음private void Form1_Load(object sender, EventArgs e)
{
Foo.Init();
// initialize static Bar fields
}
, Bar
인스턴스는 Foo.Init()
에 설정된 일부 값이 필요합니다.
public static class Bars
{
public static Bar bar = new Bar();
}
이 Foo.Init()
을 실행하기 전에 Bar
필드가 인스턴스화되기 때문에 작동하지 않습니다. 내가 생각할 수있는
유일한 해결책은
public static class Bars
{
public static Bar bar;
public static void Init()
{
bar = new Bar();
}
}
같은과 Foo.Init()
후 Bars.Init()
를 실행합니다.
이 문제를 해결할 수있는 유일한 방법입니까? 이 같은
은'사용자는 정적에 제어 할 수없는 더 생성자는 프로그램에서 실행됩니다. 'Foo.Init()'전에 실행되지 않을 것이라고 확신 할 수 있습니까? – Johan
정적 생성자는 클래스의 정적 멤버에 처음 액세스 할 때 자신을 호출 할 필요가 없습니다. –