Microsoft MVP성태의 닷넷 이야기
안녕하세요 정적 멤버 초기화 관련 간단한 질문 [링크 복사], [링크+제목 복사],
조회: 11513
글쓴 사람
조민준
홈페이지
첨부 파일
 

안녕하세요

class ABC
{
   int a = 10;
   int b = 20;
   DEF Instance_def = new DEF(a, b); (X)
  

   static int c = 10;
   static int d = 20;
   static DEF static_def = new DEF(c, d); (O)
}

이렇게 멤버 이니셜라이즈 하는 경우에 생성자 인자로 인스턴스 멤버변수가 들어갈 수 없는 이유가 객체가 초기화될 때
어느 멤버 변수부터 초기화될지 보장이 안 되기 때문에 금지한다라고 이해하고 있었는데
이 논리가 맞다면 정적 멤버 초기화도 마찬가지가 아닌가해서요
정적 필드 초기화 시점이 정적 생성자가 호출되기 바로 직전으로 알고 있는데
이게 아니라 모든 정적 필드들은 컴파일 타임에 먼저 계산이 된다거나 하는 이유 때문인 것인가요? (const는 컴파일 타임에 값이 계산되는 것으로 알고 있음)
답변 감사드립니다








[최초 등록일: ]
[최종 수정일: 8/4/2022]


비밀번호

댓글 작성자
 



2022-08-04 09시55분
알고 계신 것처럼, 인스턴스(instance) 멤버의 경우에는 초기화 순서를 컴파일러가 임의대로 정합니다.

반면, 정적(static) 멤버의 경우에는 나열된 순서대로 초기화를 합니다. 따라서, 개발자가 정할 수 있으므로 오류를 발생시키지 않습니다. 그렇긴 해도, 잘못된 순서를 갖게 되면 경고는 발생시킵니다. 가령 다음의 코드를 보면,

class ABC
{
    static DEF static_def = new DEF(static_hij); // warning CS8604: Possible null reference argument for parameter 'hij' in 'DEF.DEF(HIJ hij)'.
    static HIJ static_hij = new HIJ(static_def);

    static ABC() { }
}

서로 전달하게 되면, 순서상 뒤에서 초기화하는 정적 변수의 사용에 대해 경고를 발생시킵니다.
정성태
2022-08-04 12시30분
[조민준] 감사합니다 ㅜㅜ 속이 시원합니다
[guest]

... 91  92  93  [94]  95  96  97 
NoWriterDateCnt.TitleFile(s)
119김용국3/22/20059867                    답변글 [답변]: 정상태님 아주 잘 해결 되었습니다.... 감사합니다!
108guest3/17/200510062닷넷 프레임워크 배포
111정성태3/19/200510482    답변글 [답변]: 닷넷 프레임워크 배포
107안연준3/17/20059679[-_-]스마트 클라이언트에 관련 된 질문[-_-]
110정성태3/19/200510548    답변글 [답변]: [-_-]스마트 클라이언트에 관련 된 질문[-_-]
116안연준3/21/200510063        답변글 [답변]: 친절한 답변 고맙습니다.
98김용국3/18/200511769정성태님... 연결이 준비됬습니다
99정성태3/2/200512655    답변글 [답변]: 정성태님... 연결이 준비됬습니다
100김용국3/18/20059761        답변글 [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
101정성태3/2/20059997            답변글 [답변]: [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
102김용국3/18/200510063                답변글 [답변]: 거듭죄송하네요..... 후~~~주소를 변경하고 빌드를 다시 했습니다....
103정성태3/2/20059994                    답변글 [답변]: [답변]: 거듭죄송하네요..... 후~~~주소를 변경하고 빌드를 다시 했습니다....
104김용국3/2/200510111                        답변글 [답변]: 네... 빨리 검토해 봐 주셔서 감사합니다~~
105정성태3/2/20059278                            답변글 [답변]: [답변]: 네... 빨리 검토해 봐 주셔서 감사합니다~~
106김용국3/2/20059749                                답변글 [답변]: 답변감사합니다!
91김용국2/28/200511382IE에 WindowsFormControl을 올려 실행하면 이런에러가 나네요???파일 다운로드1
92정성태2/28/200512682    답변글 [답변]: IE에 WindowsFormControl을 올려 실행하면 이런에러가 나네요???
93김용국2/28/200511670        답변글 [답변]: 답변감사합니다... 재질문을 드립니다
94정성태2/28/200512244            답변글 [답변]: [답변]: 답변감사합니다... 재질문을 드립니다
95김용국2/28/200512293                답변글 [답변]: IE주소창에서 해당주소로 실행을 해보니....디버깅 PopUp화면이...^
96정성태2/28/200511308                    답변글 [답변]: [답변]: IE주소창에서 해당주소로 실행을 해보니....디버깅 PopUp화면이...^
97김용국3/1/200511883                        답변글 [답변]: 준비되는데로 말씀드리겠습니다 ^^
88안지환2/22/200513405^^ 사이트 잘 들러보았습니다.
89정성태2/22/200513389    답변글 [답변]: ^^ 사이트 잘 들러보았습니다.
85한기열2/22/200512043정성태님 홈같은 부드러운 페이지 넘김?은 어떻게 구현하나요?
86정성태2/22/200512718    답변글 [답변]: 정성태님 홈같은 부드러운 페이지 넘김?은 어떻게 구현하나요? [2]
... 91  92  93  [94]  95  96  97