inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Serialization #3

string write할 시에 Array.Copy한 이유

524

jiw720

작성한 질문수 17

0

안녕하세요, string serialization을 할 때 Array.Copy를 한 이유에 대해서 다른 long, ushort등과같은 데이터들은 TryWriteBytes()메서드를 사용하여 바로 dest인 buffer에 바이트를 써 주는 메서드가 구현되어있지만, string을 인자로 받는 메서드와 byte배열을 받는 메서드는 없어서 GetBytes한 이후에 Array.Copy로 buffer배열에 직접 복사한것같은데, 맞을까요?

그럼 더 궁금한건, TryWriteBytes는 ValueType만 바이트로변환해서 dest에 쓸 수 있도록하는 메서드인거라고 이해하면 될까요? string, byte[]등과같은 reference type을 인자로 받는 메서드는 구현이 안되어있는 이유를 혹시 아시는지요?

C# unity 네트워크

답변 1

0

Rookiss

https://learn.microsoft.com/ko-kr/dotnet/api/system.bitconverter.trywritebytes?view=net-7.0
함수 관련된 질문은 하시면 안 되고 스스로 검색을 해보셔야 합니다.

보통 이런 serialization 연산을 할 때 참조 값은 모순적인데
참조란 단순히 주소값에 불과하고, 주소값은 다시 실행하면 날라가고 바뀌는 주소라
굳이 들고 있을 이유가 없습니다.

0

jiw720

감사합니다. 제가 궁금한것은, 그 주솟값을 받아와서 메서드 내에서 byte처리해주고 복사해주는 TryWriteBytes와 같은 동작을 하는 메서드를 제공해주지않는 이유에 대해서 궁금했어서 검색을 해보았지만 제가 키워드를 잘 검색하지 못한 탓인지 왜 지원 하지않는지에 대한 답은 나오지 않아 혹시 아실까 싶어 질문드렸습니다. 다시한번 검색해보겠습니다.

0

Rookiss

자꾸 모든 것에 '이유'를 찾으려고 하시는데 그러시면 안 됩니다.
말 그대로 MS에서 그렇게 만든 것이고
엄청난 이유 없이 그냥 필요에 따라 그렇게 만든 것일 뿐입니다.
C#은 extension method 등으로 우리가 원하는 기능을 추가하기도 수월하고요.

TLS 질문드립니다.

0

57

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

57

2

Unity Span

0

82

2

XML, Dll 차이점

0

111

2

Session 질문입니다

0

84

1

Write Read 커서 키워드

0

79

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

76

2

네트워크 Send 전담 스레드 배치

0

100

2

UnhandledException 으로 서버 터지는 경우

0

91

2

컨텐츠 단, 엔진 단

0

108

1

질문 있습니다

0

78

2

C# 게임서버 3D MMORPG

0

153

2

유니티6 버전

0

100

2

receive하는 부분과 send하는 부분의 차이

0

135

2

커서의 위치의 중요성

0

105

2

C++ 전혀 모르는데 C# 서버

0

171

2

강의에 질문이 있습니다

0

89

2

멀티스레드 이해도 질문

0

98

1

500 vs 500

0

132

3

OnAcceptHandler 액션 함수

0

64

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

194

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

84

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

107

1

스핀락 질문.

0

111

2