inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

할당

399

김원태

작성한 질문수 27

0

강사님 안녕하세요. 

객체 지향 첫시간에서 Knight를 이용하는 내용중에..

지역 객체로 선언해서 컴파일 하니까 

할당되지 않은 지역변수를 사용했다고 하는데요.

c++에서는 지역객체로 선언해도 문제가 없는데 

c#에서는 지역변수로 객체 사용은 못하는건가요? 

C#

답변 2

0

김원태

친절하게 알려주셔서 감사합니다!

0

Rookiss

C++에서는 struct나 class나 별반 다를바가 없지만,
C#에서 struct는 복사 방식으로,
class는 참조 방식으로 동작합니다.

즉 C#에서 class Knight를 사용하면
C++ 기준으로  Knight* 과 같은 포인터 (즉 주소값)가
무조건 생략되어 있다고 생각하시면 생각하기가 편합니다.

마찬가지로 struct Archer를 사용하면,
C++ 기준으로는 포인터 문법이 막히고
복사 방식으로만 동작한다고 생각하시면 됩니다.

(물론 아주 정확하게 말씀드리면, C#에서도 unsafe 문법을 이용하면 포인터를 사용할 수 있긴 합니다)

그리고 C#에서는 스택과 힙에 대한 내용을 잊고 지내셔도 됩니다.
class는 힙에, struct는 힙/스택(struct 크기라거나, 내부 구성 요소 등에 따라 다름)에
올라가긴 하지만 C# 표준에서 딱히 어떤 경우에 어떤 메모리를 사용해야 한다~ 는 등의 룰은 없습니다.
따라서 Knight k 같은 지역 변수가 아닌 Knight k = new Knight()형태로 만들어주시면 됩니다.
놀라운건 struct인 경우에 new를 하더라도, 반드시 힙에 올라간다는 보장은 없습니다.

C++하다가 C#을 하시면, 다시 C++로 돌아가기 싫어질 수도 있습니다.

Generic에 대한 질문 있습니다.

0

97

2

2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?

0

203

2

다형성 캐시 문제

0

113

3

.

0

71

1

프로퍼티 강의 질문 있습니다.

0

79

1

이후 커리 질문

0

86

1

static

0

91

2

강의에는 새로운 클래스 파일을 생성하면...

0

72

1

생성자의 이름 선언

0

65

1

9:03 Divide(10 , 3) 부분 질문입니다

0

88

1

깃허브 관련 질문 있습니다.

0

239

1

비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문

0

249

1

C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!

0

306

2

Activator 질문있습니다

0

332

1

이넘 타임 선언 질문

0

347

1

Sort 오름차순, 내림차순

0

323

1

질문 있습니다.

0

249

1

팩토리얼 문제

0

270

1

Sort함수 질문있습니다.

0

265

1

다형성 함수 질문 있습니다.

0

221

1

질문이 있습니다.

0

228

1

섹션2 연습문제 질문입니다.

0

214

1

안녕하세요~서버에 대해 질문이 있습니다.

1

283

1

텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ

0

395

1