기본 패턴
csharp
public struct Point
{
public int X { get; init; }
public int Y { get; init; }
}설명
struct는 값 타입이므로 대입하거나 전달할 때 복사가 일어나는 것이 기본 동작입니다.- 좌표, 색상, 시간 조각처럼 비교적 작고 독립적인 데이터를 표현할 때 잘 맞습니다.
- 클래스보다 가볍게 보일 수 있지만, 복사가 잦아지면 오히려 비용이 커질 수 있습니다.
- 최근 C#에서는
init접근자와 함께 불변에 가까운struct를 만드는 패턴이 자주 쓰입니다.
짧은 예제
csharp
Point start = new Point { X = 10, Y = 20 };
Point end = start;
end = new Point { X = 30, Y = 40 };
Console.WriteLine($"{start.X}, {start.Y}");
Console.WriteLine($"{end.X}, {end.Y}");빠른 정리
| 항목 | 설명 |
|---|---|
struct | 값 타입 사용자 정의 구조 |
| 대입 | 값 복사가 기본 |
| 작은 데이터 | 좌표, 색상, 범위 같은 값 모델에 적합 |
init | 생성 이후 변경을 제한하는 패턴에 유용 |
| 클래스와 차이 | 참조 타입이 아니라 값 타입 |
주의할 점
큰 struct를 자주 복사하면 성능이 나빠질 수 있습니다. "클래스보다 가볍다"는 인상만으로 선택하지 말고 실제 사용 패턴을 함께 봐야 합니다.