inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

자료 구조 - MyLinkedList 관련 질문입니다.

188

imdev

작성한 질문수 3

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요! 강사님.
은닉화 관련 질문이 있는데요,
여기서 MyNode는 MyList에서만 사용할 것이기 때문에 set 접근을 MyList에서만 허용하고 싶습니다.
C++의 경우 friend 키워드를 통해 예외적으로 접근을 허용할 수 있었던 것 같은데,
C#은 구글링을 해보니 internal 키워드를 이용할 수 있다고 확인했는데,
internal 키워드를 통하면 같은 네임스페이스 안에서는 public처럼 사용할 수 있긴 한데...
C#에서 제공하는 LinkedList 기본 함수는 NextNode를 get은 가능하지만 set은 하지 못하도록 막혀있습니다.
(그 어떤 using namespace 없이..)
 
그래서 제가 만든 LinkedList는 물론 네임 스페이스를 구분하면 가능하겠지만, 기본 자료형처럼 네임스페이스로 구분하지 않고 다른방법이 있는지 궁금해요!

C#

답변 1

0

Rookiss

여기서 MyNode는 MyList에서만 사용할 것이기 때문에 set 접근을 MyList에서만 허용하고 싶습니다.
 
-> 연결 리스트의 노드는 외부에서도 간직해서 일종의 핸들처럼 사용해야 의미가 있습니다.
그게 아니라면 동적 배열로 가는게 낫겠죠. 내부에서만 사용하고 싶다면
class 내에 중첩된 class를 만드는게 가장 최선의 방법으로 생각됩니다.

C#에선 friend 개념이 없고 애당초 C++에서도 friend는 우아하지 않은 방법으로 간주되긴 했죠.
찾아보니 다음과 같은 방법이 있긴 하네요. [assembly: InternalsVisibleTo("OtherAssembly")]
https://stackoverflow.com/questions/204739/what-is-the-c-sharp-equivalent-of-friend

0

imdev

답변 감사합니다! 강사님.
중첩된 클래스를 사용하시라는 말씀에서 힌트를 얻었어요~

 

노드를 핸들처럼 사용하고자, MyLinkedListNode는 public으로 열어두고,

Next와 Prev 프로퍼티는 public get, protected set으로 열어두었습니다.

 

그리고 MyLinkedList안에서 MyLinkedListNode를 상속받는 중첩 클래스(MyNode)를 만들어서 해당 클래스로 한 번 랩핑(?)해서 구현하니, MyLinkedList에서는 Node를 자유롭게 수정할 수 있지만, 메인 함수에서는 수정할 수 없도록 friend를 모방(?)할 수 있었네요 ㅎㅎ

 

즐거운 주말 보내세요.

감사합니다.

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

0

208

2

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

0

104

1

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

0

85

1

parent를 Pos타입으로 만든 이유

0

83

1

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

0

146

1

격자 생성 안됨 무한루프

0

119

1

BFS 질문

0

150

2

격자 무한 출력

0

178

2

A* 의 PriorityQueue 관련 질문입니다

0

163

2

vscode에서 원그리기

0

187

1

환결설정 강의 원 그리기

0

134

1

15-17분

0

95

1

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

0

147

2

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

0

215

1

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

0

171

1

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

0

157

1

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

0

149

1

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

0

184

1

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

0

286

1

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

0

211

2

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

0

235

1

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

3

326

2

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

0

257

2

맵 만들기 오류

0

184

1