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

안녕하세요

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]

... 46  47  48  49  50  51  52  53  [54]  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1345장구니11/4/201422812AWS 인스턴스를 만들었는데 [1]
1343h11/2/201421938안녕하세요 [1]
1342왕초보11/1/201426332C#에서의 함수포인터 [13]
1347왕초보11/5/201421147    답변글 [답변]: C#에서의 함수포인터 [1]
1341영택10/29/201422482MFC Amazon S3 사용관련하여 질문드립니다. [2]
1344영택11/4/201418761    답변글 [답변]: MFC Amazon S3 사용관련하여 질문드립니다. [2]
1340감사합니다10/28/201423603c# wpf shdocvw internet explorer를 윈도우프레임으로 집어 넣을 수 있는지 궁금합니다. [3]파일 다운로드1
1338헬프미10/28/201424533tcp 소켓의 SYN_RECV 상태에 대하여 질문있습니다. [3]
1336이소정10/27/201419208filestream seek에 대해 질문있습니다. [1]
1337이소정10/28/201420502    답변글 [답변]: filestream seek에 대해 질문있습니다.파일 다운로드1
1339이소정10/28/201423647        답변글 [답변]: [답변]: filestream seek에 대해 질문있습니다. [2]파일 다운로드2
1335황지혜10/24/201424251psexec 관련 질문드립니다. [1]
1334dell10/24/201420074여기가 있는줄 모르고 방명록에 남겼네요 ㅠㅠ 방명록 한번만 봐주시면 안될지요? [1]
1333왕초보10/24/201420402Bitmap 질문 [5]
1332김동진10/16/201427062clickonce 와 smartscreen filter 기능에 대해서 [2]
1331궁굼합니다10/8/201420556loopback adapter 자동 설치가 가능 한가요? [2]
1330이현중10/8/201423430파일 다운로드 방법 문의 [2]파일 다운로드1
1329popo10/2/201420744싱글톤과 싱글톤 소멸자에 대해 궁금점이 있습니다. [1]
1328달쏭9/25/201421709WCF Service측에서 parameter 값이 null이 오는 이유를 알고 싶어요. [2]
1326궁굼합니다9/19/201420503VB의 Shell 기능과 완벽히 똑같은 기능의 함수 [4]
1325지현태9/18/201420271WPF 의존속성과 바인딩에 대한 질문입니다.. [1]파일 다운로드1
1324popo9/17/201419034wcf 질문 드립니다. [1]
1323Anon...9/17/201421966인스턴스와 객체의 차이 [1]
1322김영대9/16/201421799죄송하지만 .NET 관련 질문게시판이지만 혹시 ASP.NET MVC에 대해서 질문 드려도 됩니까 (__);; [2]
1321부탁드립...9/15/201424229윈도우 어플리케이션 개발 방법(?) 에대해(직접적인 코드라기보단 프로젝트 방향??) [14]
1320소켓서버...9/13/201424715서로다른 포트번호로 로컬 Socket 서버를 개설시 Close 문제 입니다. [2]
... 46  47  48  49  50  51  52  53  [54]  55  56  57  58  59  60  ...