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

안녕하세요

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)
1343h11/2/201420947안녕하세요 [1]
1342왕초보11/1/201425446C#에서의 함수포인터 [13]
1347왕초보11/5/201420155    답변글 [답변]: C#에서의 함수포인터 [1]
1341영택10/29/201421502MFC Amazon S3 사용관련하여 질문드립니다. [2]
1344영택11/4/201417834    답변글 [답변]: MFC Amazon S3 사용관련하여 질문드립니다. [2]
1340감사합니다10/28/201422586c# wpf shdocvw internet explorer를 윈도우프레임으로 집어 넣을 수 있는지 궁금합니다. [3]파일 다운로드1
1338헬프미10/28/201423451tcp 소켓의 SYN_RECV 상태에 대하여 질문있습니다. [3]
1336이소정10/27/201418321filestream seek에 대해 질문있습니다. [1]
1337이소정10/28/201419416    답변글 [답변]: filestream seek에 대해 질문있습니다.파일 다운로드1
1339이소정10/28/201422512        답변글 [답변]: [답변]: filestream seek에 대해 질문있습니다. [2]파일 다운로드2
1335황지혜10/24/201423108psexec 관련 질문드립니다. [1]
1334dell10/24/201419018여기가 있는줄 모르고 방명록에 남겼네요 ㅠㅠ 방명록 한번만 봐주시면 안될지요? [1]
1333왕초보10/24/201419372Bitmap 질문 [5]
1332김동진10/16/201426007clickonce 와 smartscreen filter 기능에 대해서 [2]
1331궁굼합니다10/8/201419474loopback adapter 자동 설치가 가능 한가요? [2]
1330이현중10/8/201422212파일 다운로드 방법 문의 [2]파일 다운로드1
1329popo10/2/201419557싱글톤과 싱글톤 소멸자에 대해 궁금점이 있습니다. [1]
1328달쏭9/25/201420574WCF Service측에서 parameter 값이 null이 오는 이유를 알고 싶어요. [2]
1326궁굼합니다9/19/201419496VB의 Shell 기능과 완벽히 똑같은 기능의 함수 [4]
1325지현태9/18/201419298WPF 의존속성과 바인딩에 대한 질문입니다.. [1]파일 다운로드1
1324popo9/17/201418164wcf 질문 드립니다. [1]
1323Anon...9/17/201420990인스턴스와 객체의 차이 [1]
1322김영대9/16/201420815죄송하지만 .NET 관련 질문게시판이지만 혹시 ASP.NET MVC에 대해서 질문 드려도 됩니까 (__);; [2]
1321부탁드립...9/15/201423113윈도우 어플리케이션 개발 방법(?) 에대해(직접적인 코드라기보단 프로젝트 방향??) [14]
1320소켓서버...9/13/201423485서로다른 포트번호로 로컬 Socket 서버를 개설시 Close 문제 입니다. [2]
1319ㅇㅇ9/12/201423396134쪽 예제 오타 [3]
... 46  47  48  49  50  51  52  53  [54]  55  56  57  58  59  60  ...