2013-04-29 3 views
1

C# 응용 프로그램에서 정적 클래스와 정적 멤버를 여러 번 사용했지만 어제 정적 멤버가 메모리에 처음로드되는 이유를 묻는 질문이있었습니다.정적 멤버가 메모리에서 처음으로로드되는 이유

옳은 질문입니까? 그렇다면 그 이유를 설명해주십시오.

감사합니다,

+0

여기에 좋은 읽을 거리 : http : //www.codeproject.com/Articles/15269/Static-Keyword-Demystified – t3hn00b

+0

정적 멤버는 [Application Domain] (http://msdn.microsoft.com/en- us/library/ms173138 (v = vs80) .aspx)가로드 된 상태로 유지됩니다. –

+0

인터뷰 질문이 있으십니까? – AksharRoop

답변

2

클래스가로드 될 때 정적 클래스가 초기화됩니다. 객체가 생성되기 전에 초기화됩니다. 왜냐하면 어떤 객체도 초기화 할 필요가 없기 때문입니다. 정적 클래스와 정적 필드가 여러 개있을 수 있습니다. 그것들은 언제 어디서나 사용할 수 있도록 처음부터 한번 초기화됩니다.

희망 설명이 도움이 되길 바랍니다.

3

정적, 또는 오히려 클래스 필드는 클래스 자체에 저장하고 액세스 할 수 있도록 클래스의 인스턴스를 필요로하지 않습니다. 클래스는 처음 사용되는 즉시 메모리에로드되고 클래스가로드 되 자마자 클래스 필드를 사용할 수 있습니다.

2

정적 멤버는 런타임에 할당되는 멤버이며 메모리 주소 지정은 변경할 수 없습니다. 정적 멤버가 초기화 된 후에는 프로그램의 끝까지 메모리의 같은 위치에 머물러 있다는 말입니다.

정적 멤버는 런타임에 초기화되지만, 꼭 필요한 것은 초기화되지 않습니다. 더 자세히 설명하기 위해 응용 프로그램 구조에 따라 컴파일 타임 상수 문자열 및 기타 상수와 같은 항목을 "첫 번째"로 할당 할 수 있습니다. 즉, 응용 프로그램의 메모리 주소 지정이 시작될 때를 의미합니다.

이 기능의 가장 큰 특징은 전화를 걸기위한 올바른 구성원/방법을 찾기 위해 메모리를 "검색"할 필요가 없기 때문에 속도가 크게 증가한다는 사실입니다.

관련 문제