inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

연결 리스트 구현 연습

17:10 부근에 if(room.Prev != null)부분 질문입니다.

해결된 질문

157

김성민

작성한 질문수 6

2

위에서 Tail인 경우와 Head인 경우에 대해서 체크를 해주었는데 그 경우가 아닌 상황(방이 중간에 있는 상황)에서 선택된 방의 Prev와 Next가 null일수가 있나요?

널값에 대한 체크를 한다고 하셨는데 제대로 연결리스트가 이어졌다면 null값을 왜 체크하는지 궁금해서 여쭤봅니다.

감사합니다

C#

답변 1

4

Rookiss

안녕하세요,

우선 기본적으로 참조 형식을 접근해서 사용할 때
null 체크를 습관하는 것이 좋습니다.
혹시라도 본인이 로직 실수를 하거나,
아니면 잘 돌아가는 코드를 남이 수정할 경우는 늘 있으니까요.

말씀주신대로 Tail인 경우와 Head인 경우를 체크는 하긴 했지만,
단순히 Head, Tail을 바꿔치기 하기 위해 사용했지
room 자체에는 아무런 수정을 하지 않았습니다.
if, else if, else 형태가 아니라 단순한 if, if, if인 것에 주의하세요!

만약 room이 Head인 상황이라면,
room.Prev는 여전히 null인 상태일텐데
여기서 room.Prev.Next를 하면
프로그램이 크래시 나게 될겁니다.

여담이지만 서버가 크래시 나는 상황의 대부분은 이런 간단한 버그(null체크 등)에서 비롯됩니다.
(유저들은 그걸 모르고 퍼블리셔 측 서버 관리자한테 항의를 하죠 ㅎㅎ)

게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다

0

172

2

글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들

0

88

1

NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요

0

66

1

parent를 Pos타입으로 만든 이유

0

74

1

콘솔창에 격자가 안나옴 미로 생성 X

0

133

1

격자 생성 안됨 무한루프

0

114

1

BFS 질문

0

143

2

격자 무한 출력

0

167

2

A* 의 PriorityQueue 관련 질문입니다

0

155

2

vscode에서 원그리기

0

180

1

환결설정 강의 원 그리기

0

122

1

15-17분

0

87

1

3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?

0

141

2

동적 배열 관련 질문입니다!

0

209

1

Big-o 표기법에서 시간 복잡도

0

167

1

7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다

0

151

1

트리구현연습 강의 질문있어요

0

143

1

창은 뜨는데 맵이 나타나지 않아요.

0

175

1

Ctrl F5 하면 나오는 창은 어디서 설정할까요??

0

271

1

void CalcPathFromParent(Pos[,] parent)에 대해서

0

202

2

NullReferenceException예외가 발생했을때 어떻게 해야하나요?

0

229

1

[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제

3

311

2

오른손 법칙에서 플레이어 점이 안 움직입니다

0

245

2

맵 만들기 오류

0

179

1