Dictionary 관련 메소드 사용 질문 드립니다.
에러가 발생하는 경우
public Dictionary<string, int> c = new Dictionary<string, int>();
c.Add("A", 5);
에러가 발생하지 않는 경우
public Dictionary<string, int> c = new Dictionary<string, int>();
private void Start()
{
c.Add("A", 5);
}왜 Start() 메서드 안에 있으면 에러가 발생하지 않고 dictionary 선언 후 바로 Add를 하면 에러가 발생하는지 궁금합니다.

답변 1
1
안녕하세요 🙂
C#에서는 클래스의 필드 선언부에서 메서드 호출(문장 실행)을 직접적으로 할 수 없습니다.
c.Add("A", 5);는 명령문이기 때문에 클래스 바디에서 직접 실행할 수 없습니다.
클래스 바디에서 실행할 수 있는 것은 필드 초기화 뿐입니다.
Start는 Unity의 라이프사이클 메서드이며, 게임 오브젝트가 활성화될 때 호출합니다.
이 시점에는 c라는 딕셔너리가 정확히 new Dictionary<string, int>();
로 초기화가 되어있기 때문에 .Add()가 가능해집니다.
public Dictionary<string, int> c = new Dictionary<string, int>()
{
{ "A", 5 }
};
필드 선언시에 데이터를 함께 넣고 싶으시다면 초기화 구문을 함께 사용하시면 됩니다.
소스를 받을 수 있는 링크가 있을까요?
0
49
2
프로덕션 부분 사용 불가
0
61
2
접근지정자
0
57
2
섹터2 5강 Authconfig 문의
0
41
1
in-app purchasing 버튼의 install 버튼이 비활성화되어있을때 어떻게 해결해야하나요 ?
0
48
2
유니티 제외 설치한 프로그램들 및 파일 삭제 방법
0
47
1
깃허브에서 콤피유아이 매니저 설치하는게 안됩니다.
0
64
2
5강, 오류 수정과 관련해서
0
63
2
컴퓨터를 껐다가 클로드 코드 다시 키는 방법 알려주세요.
0
53
1
anim.SetTrigger("IsHit")이 해제가 안됩니다.
0
75
1
8:56초 b.Remove(3) 부분 설명에 대해 질문드립니다.
0
65
2
2D게임에서 트램플린 Trigger감지관련
0
136
1
Tilemap Collider 2D 사용 시 평지에서 캐릭터가 안 움직이는 현상
1
192
1
Game화면에서 캐릭터가 끊기듯 움직입니다.
0
168
1
Start 자동 완성이 안됩니다.
0
194
2
섹션2. 메서드와 접근자에서 잘못된 설명이 있어요.
0
215
2
애니메이션 점프 적용되지 않는 문제
0
348
2
캐릭터 이동 구현 rotation 값 변경
0
270
2
안녕하세여 3D 오브젝트 Material 관련 질문입니다
1
245
1
제가 놓친 부분이 있는데 혹시 어디서 확인할 수 있나요...?
1
352
2
화면 설정 문의의 건
2
261
2
anim.SetBool
1
329
2
Start문 자동완성
2
248
1
2D Object에 Square가 안나옵니다 ㅠ
2
457
2





