C# - Class vs Struct구조적 차이점“값 복사 비용이 크면 struct 대신 class로 바꾸면 되지 않나?”“in 키워드로 참조 전달이면 struct도 사실상 class 아닌가?” C#에서는 Class와 Struct가 겉보기엔 비슷하게 보이지만, 그 내부 동작과 철학은 완전히 다르다.일반적으로는 값 전달 방식의 차이와 복사값의 차이(class는 얕은 복사(주소), struct는 깊은 복사(값) 발생)가 있다. in struct는 단순한 최적화가 아니라, “값형의 의미를 보존하면서 복사를 회피” 하는 언어적 장치이다. 이 차이를 이해하면 성능과 설계 안정성 모두를 잡을 수 있다. 항목 Class Struct 저장 위치힙(Heap)스택(Stack) 또는 인라인전달 방식참조 전달값 전달(복사)G..
C# 읽기 전용 참조 전달 (in 키워드) in 키워드 C#에서 값 형식(struct, int, float 등)을 메서드 인자로 전달할 때는 기본적으로 값 복사(by value) 가 일어난다. 이는 작은 구조체라면 상관없지만, 구조체의 크기가 커질수록 복사 비용이 눈에 띄게 커진다. in 키워드는 이러한 복사 비용을 줄이면서도 읽기 전용으로 참조를 전달할 수 있게 해준다. 즉, “성능 + 안전성” 두 가지를 동시에 잡는 키워드입니다. void Process(in LargeStruct data) { // data를 복사하지 않고 참조로 읽음 Console.WriteLine(data.Value); // data.Value = 100; ❌ 컴파일 에러 (읽기 전용)} 전달 방식 비교값 전달 ..