본문 바로가기

struct

C# Operator Overloading으로 사용자 정의 연산 구현 연산자 오버로딩은 값 의미를 가진 타입에 자연어처럼 읽히는 연산을 부여해 가독성과 도메인 표현력을 높이는 기능입니다. 예를 들어 벡터의 덧셈, 분수의 사칙연산, 금액 합산 등에서 메서드 호출보다 직관적인 코드가 됩니다.1. 기본 문법 한눈에 보기연산자 메서드는 반드시 해당 타입 내부에 public static으로 선언하며, 반환형과 매개변수는 연산 의미에 맞게 정의합니다. 단항 연산자는 매개변수 1개, 이항 연산자는 2개를 받습니다.public readonly struct Vector2{ public double X { get; } public double Y { get; } public Vector2(double x, double y) { X = x; Y = y; } // 이항 연.. 더보기
C# 암시적/명시적 변환 연산자(implicit/explicit) 구현하기 사용자 정의 타입을 값처럼 편하게 다루고 싶다면 암시적/명시적 변환 연산자를 고려합니다. 안전한 변환은 implicit, 주의가 필요한 변환은 explicit로 제공하면 코드 가독성과 안정성이 동시에 올라갑니다.1. 언제 implicit, 언제 explicit인가요?암시적(implicit)은 정보 손실이나 예외 가능성이 사실상 없고, 개발자가 놀라지 않을 변환에만 사용합니다. 예: Guid 래퍼로의 포장, 단위의 확장 변환(좁은 개념에서 넓은 개념). 명시적(explicit)은 범위 손실, 정밀도 이슈, 실패/예외 가능성이 있거나 의미가 애매한 변환에 사용합니다. 예: 문자열 파싱, 단위 환산(반올림 포함), 내부 값 노출.2. 기본 문법과 규칙변환 연산자는 public static으로 선언하며, 두 타.. 더보기
C# 구조체를 읽기 전용(ReadOnly Struct)으로 설계하기 값 타입을 불변으로 설계하면 코드가 단순해지고, 방어적 복사(defensive copy)를 줄여 성능을 개선할 수 있습니다. C#의 readonly struct는 이런 목적에 딱 맞는 기능입니다. 핵심만 빠르게 정리합니다.1. 왜 읽기 전용 구조체인가- 불변 특성으로 상태 추적이 쉬워집니다.- 읽기 전용 참조(in, ref readonly)와 결합하면 복사 비용을 줄일 수 있습니다.- 멀티스레드 시나리오에서 동기화 부담이 줄어듭니다.2. readonly struct란?구조체 앞에 readonly를 붙이면 모든 인스턴스 필드가 읽기 전용이 되며, 인스턴스 멤버에서 상태 변경이 금지됩니다. 생성자 내부에서만 필드 할당이 가능합니다.3. 기본 선언 패턴using System;using System.Diagno.. 더보기
C# 구조체(Struct) 심층 분석 구조체는 C#의 대표적인 값 형식입니다. 값语의 복사语, 힙/스택 오해, 불변 설계, boxing, ref struct, 생성자 규칙까지 실무에서 꼭 알아야 할 포인트를 정리합니다.1. 값 형식의 본질구조체는 값 형식입니다. 변수에 대입하거나 메서드 인자로 전달하면 값이 통째로 복사됩니다. 참조가 아닌 데이터 자체가 이동한다는 점이 핵심입니다.struct Point{ public int X; public int Y; public Point(int x, int y) { X = x; Y = y; } public void Move(int dx, int dy) { X += dx; Y += dy; }}static void MoveRight(Point p){ // 값 복사본을 수정합니다... 더보기