인프런 커뮤니티 질문&답변

jiw720님의 프로필 이미지
jiw720

작성한 질문수

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

Serialization #3

string write할 시에 Array.Copy한 이유

작성

·

459

·

수정됨

0

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

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

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

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

jiw720님의 프로필 이미지
jiw720
질문자

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

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

jiw720님의 프로필 이미지
jiw720

작성한 질문수

질문하기