모던 C#: 타입 시스템 마스터하기
도서+사은품 또는 도서+사은품+교보Only(교보굿즈)
15,000원 미만 시 2,500원 배송비 부과
20,000원 미만 시 2,500원 배송비 부과
15,000원 미만 시 2,500원 배송비 부과
1Box 기준 : 도서 10권
로그아웃 : '서울시 종로구 종로1' 주소 기준
이달의 꽃과 함께 책을 받아보세요!
1권 구매 시 결제 단계에서 적용 가능합니다.
알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

C#은 단순하고 현대적인 언어처럼 보일 수 있지만, 그 내부에는 깊이 있는 개념들이 숨어 있습니다. 그중에서도 '타입 시스템'은 모든 C# 프로그램의 기반이자, 좋은 설계를 위한 핵심 도구입니다. 《모던 C# - 타입 시스템 마스터하기》는 값 타입과 참조 타입의 차이를 단순한 문법 설명에 그치지 않고, 코드 설계와 성능, 의미 전달까지 연결해 설명하는 해설서입니다.
이 책은 특히 ‘왜 값을 값 타입으로 만들어야 하는가’라는 질문에 명확한 답을 제시합니다. 값 타입은 단순히 성능 향상을 위한 수단이 아니라, 코드에 의도를 명확히 담아내는 방법입니다. 예를 들어 int 대신 Meter, Temperature와 같은 도메인에 특화된 타입을 사용함으로써, 해당 값이 어떤 용도로 쓰이는지를 코드 레벨에서 바로 이해할 수 있게 만듭니다. 이는 곧 코드의 안전성과 가독성을 높이고, 협업과 유지보수의 효율성까지 향상시키는 결과로 이어집니다.
《모던 C#》은 복사와 참조의 작동 방식, 값 타입의 설계 기준, 메모리 구조와 성능 측정, 도메인 모델링에서의 타입 활용 등, 타입 시스템의 본질을 다양한 각도에서 조망합니다. C#의 최신 문법을 나열하는 대신, 앞으로도 변하지 않을 '핵심'을 중심에 두고 설명하며, 실무에서 적용 가능한 통찰을 제공합니다.
이 책의 시리즈 (1)
작가정보
C#을 사용해 20여년 이상 개발을 계속한 전문 개발자이다.
물류, 공공 서비스, 회계 부문 등 다양한 업계에서 C#을 사용했다.
C Vu, the members’ journal of the ACCU(https://accu.org)의 편집자인 동시에 다양한 콘퍼런스에서 연사로 활동하고 있다.
목차
- 감사의 말
들어가며
1장 타입 시스템 활용하기
좋은 이름의 가치
타입을 이용해 명확하게 하기
이름 있는 인수
커스텀 타입
캡슐화
불변성
값 검증
테스팅
리팩터링
매직 넘버를 이름 있는 상수로 대체하기
속성과 값을 단순화하기
산술 연산자 오버로딩
새로운 타입에 대한 필요를 결정하기
단위 인코딩하기
열거형을 사용해 단위를 아이템화하기
정적 생성 메서드
설계의 대칭성
단위를 명시적으로 만들기
가장 자연스러운 사용 방법 선택하기
단위의 의미를 사용해 타입 반환하기
완전한 형태의 캡슐화된 값
타입 추상화 위치 결정하기
정리
2장 값 타입과 참조 타입
사용자 정의 타입
구조체와 클래스
레코드와 레코드 구조체
상속
타입 인스턴스의 수명
변수
변수 vs 값
결정적 할당
인스턴스와 스토리지
내장된 값
박스된 값
시맨틱과 타입
공통 타입 시스템
복사 시맨틱
레코드, 구조체, 값 시맨틱
생성과 초기화
기본 초기화
인스턴스 생성자
필드 초기자
객체 초기자
비파괴 변형
null 값과 기본값
제네릭과 null
제네릭과 기본값
nullable 값 타입
nullable 참조 타입
null-forgiving 연산자
정리
3장 참조 매개변수와 값 매개변수
메서드 매개변수와 인수
참조 타입 vs 참조로 전달되는 매개변수
값 타입과 매개변수
참조의 값
참조 변수와 앨리어싱
변경할 수 있는 참조로 전달하는 매개변수
참조로 참조 전달하기
참조로 값 전달하기
출력 매개변수 다루기
참조 전달 매개변수의 한계
속성값
참조 전달 매개변수에 대한 오버로딩
필드 사용하기
확장 메서드
사이드 이펙트와 다이렉트 이펙트
변경 vs 생성
선언적 코드와 성능
읽기 전용 참조 및 참조로 반환하기
참조로 값 반환하기
데이터 수정 방지하기
범위 안에서 참조 전달 변수 유지하기
성능 vs 단순함 고려하기
변경할 수 있는 참조 전달 매개변수 정리
정리
4장 암묵적 복사하기와 명시적 복사하기
단순한 할당으로 복사하기
값 복사 동작
읽기 전용 속성 vs 불변 타입
새 객체 만들기
값 덮어쓰기
값 타입 생성하기
레코드를 값 타입처럼 복사하기
불필요한 박스하기 식별하기
인터페이스로 박스하기
메서드 호출 안
메서드 매개변수와 인수
값으로 전달하기와 반환하기
속성에 접근하기
연산자와 함께 표현식 사용하기
반환 타입 인스턴스 수정하기
참조 타입 속성
인스턴스 메서드와 가변성
읽기 전용 매개변수를 위한 인수로서의 속성
방어적 복사본
변경할 수 있는 값 타입과 in 매개변수
자동 속성 vs 비자동 속성
읽기 전용 참조 변수
읽기 전용 필드
변경 방어하기
읽기 전용 접근자와 메서드
읽기 전용 타입
정리
5장 등치 타입
내장 등치
정수
부동소수점값
참조 등치
문자열 등치 및 값 등치
클래스에 대한 커스텀 등치
등치 연산자 정의하기
null과의 비교 다루기
타입 안전한 비교 만들기
해시 코드 다루기
구조체와 등치
구조체에 대한 Equals 오버라이드하기
값 박스하기 및 신원 비교하기
제네릭 변수 비교하기
제네릭 코드와 Equals 메서드
IEquatable〈T〉 인터페이스
컴파일러에 의해 생성된 등치
레코드 및 레코드 구조체
nullable 값에 대한 등치
값 튜플과 등치
정리
6장 값의 특성
값 vs 참조 시맨틱
복사 및 등치 비교 동작
가변성
기계적 문법(메커니즘) vs 의미적 문법(시맨틱)
객체 관계
객체의 종류
객체 특성
객체 역할 모델링을 위한 설계 개선
추상과 용어
중복 제거하기
클래스 불변량 구축하기
대칭성을 사용해 명확하게 만들기
캡슐화와 public 인터페이스
인터페이스 확장하기
내부 인터페이스 줄이기
추상화 조합하기
값 시맨틱과 참조 시맨틱 선택하기
기본 변수의 함정 회피하기
커스텀 동작 vs 생성된 동작 구현하기
생성된 메서드 오버라이드하기
순서 비교
동등 vs 등치
비교를 위한 계약
다른 유형의 순서
균일성과 일관성의 위험성
산술 타입과 비산술 타입
비표준적 연산자의 동작
정리
7장 값 타입과 다형성
값 타입이 봉인돼 있는 이유
구현 상속
클래스에 대한 값 기반 등치
파생된 클래스에서의 등치 동작
등치 비교와 타입 대체
포함 다형성과 서브타이핑
가상 메서드의 Input과 Output 타입 다루기
타입의 계약 유지하기
레코드 타입 상속하기
구현 상속 피하기
타입을 상속하지 않고 포함하기
제네릭을 사용한 매개변수를 갖는 다형성
제네릭 제약 사항과 프로토콜 인터페이스
제네릭 메서드 매개변수와 타입 추론
매개변수화 된 타입
오버로딩을 통한 애드혹 다형성
오버로드된 연산자를 갖는 심볼릭 다형성
다형성을 위한 제네릭 델리게이트
변환을 사용한 다형성 강제
확대 변환 vs 축소 변환
표현에 대해
목적에 대해
정리
8장 성능과 효율
성능 측정하기 및 최적화하기
JIT 컴파일러
성능 벤치마크
프로파일러
Equals를 사용해 기본 성능 측정하기
단순함에 숨겨진 비용
ValueType.Equals 메서드
ValueType.GetHashCode 메서드
HashCode.Combine 메서드
등치 최적화하기
IEquatable의 영향
속성 접근
등치 연산자
타입이 성능에 미치는 영향
복사 비용 측정하기
큰 인스턴스 복사하기
객체 생성 비용 측정하기
컴파일러가 생성한 Equals 메서드 측정하기
공통적인 이디엄과 프랙티스가 성능에 미치는 영향
루핑과 이터레이션
패턴 매칭과 셀렉션
정리
마치며
부록: 더 읽어보기
출판사 서평
1장. 타입 시스템 활용하기
의미 있는 사용자 정의 값 타입을 설계하고, 코드의 가독성과 명확성을 높이는 방법을 다룹니다.
2장. 값 타입과 참조 타입
이 둘의 동작 방식 차이와 메모리 구조, 복사/등치 비교 시의 영향 등을 정리합니다.
3장. 참조 매개변수와 값 매개변수
메서드 호출 시 어떤 방식으로 인자가 전달되는지, 성능과 안전성에 어떤 영향을 미치는지 설명합니다.
4장. 암묵적 복사와 명시적 복사
값 복사에 따른 예기치 않은 결과를 방지하기 위한 전략을 살펴봅니다.
5장. 등치 타입
값의 비교 방식, 안전한 동등성 구현 방법, 컴파일러 기능 활용 팁 등을 다룹니다.
6장. 값의 특성
값 타입이 단순한 저장소를 넘어 의미를 가지는 설계 단위로 기능할 수 있는 조건들을 설명합니다.
7장. 값 타입과 다형성
값 타입에서 상속과 다형성이 어떻게 제한되는지, 그 대안을 중심으로 설명합니다.
8장. 성능과 효율
타입 설계가 애플리케이션 성능에 끼치는 영향과, GC(가비지 컬렉션)를 고려한 최적화 전략을 제시합니다.
역자의 말
프로그래밍에 사용하는 대부분의 개발 언어에서는 “값 타입”(Value type)과 “참조
타입”(Reference type)을 제공합니다. 일반적으로 우리가 알고 있는 값 타입과 참
조 타입의 차이는 다음과 같이 비교할 수 있습니다.
값 타입과 참조 타입의 대략적인 차이는 알고 있지만, 다음 질문에 대답하기는 다
소 어려울 수 있습니다.
● 값 타입과 참조 타입은 왜 구분해야 할까?
● 값 타입과 참조 타입은 문법적 혹은 의미적으로 어떤 차이를 가질까?
● 값 타입 대신 참조 타입, 혹은 참조 타입 대신 값 타입을 사용하면 절대로 안 될까?
● 프로그래밍 언어의 기반 도구(컴파일러 등)들이 타입 문제를 잘 처리해 주는데 굳이
이런 차이를 알아야 할까?
이 책은 C#이 제공하는 값 타입의 문법적, 의미적 특성을 깊게 설명하고 그 사용 방법과 예제를 통해 값 타입과 참조 타입 사이의 막연한 안개를 걷어 내고 싶은 분들에게 명확한 나침반과 지도의 역할을 해줄 것입니다. C#에 국한된 내용을 설명하지만 이 책에서 설명한 개념들을 다른 프로그래밍 언어에도 적용해 본다면 재미있고 의미있는 통찰을 얻는데 도움이 될 것입니다. 여러분이 보다 효율적이고 안정적이며 뛰어난 성능의 프로그램을 작성하는 데 이 책이 도움이 되길 바랍니다.
번역을 통해 좋은 지식을 전할 수 있게 해주신 하나님께 감사드립니다. 그리고 멋진 책을 번역하는 데 참여할 수 있도록 기회를 주신 영진닷컴 관계자 여러분께 감사합니다. 언제나 분주한 가장을 위해 든든한 기도와 지원을 아끼지 않는 아내와 세 딸에게도 감사를 전합니다.
기본정보
ISBN | 9788931479386 |
---|---|
발행(출시)일자 | 2025년 04월 15일 |
쪽수 | 384쪽 |
크기 |
187 * 256
* 29
mm
/ 1106 g
|
총권수 | 1권 |
Klover 리뷰 (0)
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집 (0)
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)
구매 후 리뷰 작성 시, e교환권 100원 적립
-
반품/교환방법
* 오픈마켓, 해외배송 주문, 기프트 주문시 [1:1 상담>반품/교환/환불] 또는 고객센터 (1544-1900) -
반품/교환가능 기간
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내 -
반품/교환비용
-
반품/교환 불가 사유
(단지 확인을 위한 포장 훼손은 제외)
2) 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
예) 화장품, 식품, 가전제품(악세서리 포함) 등
3) 복제가 가능한 상품 등의 포장을 훼손한 경우
예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
4) 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
5) 디지털 컨텐츠인 ebook, 오디오북 등을 1회이상 ‘다운로드’를 받았거나 '바로보기'로 열람한 경우
6) 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
7) 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
8) 세트상품 일부만 반품 불가 (필요시 세트상품 반품 후 낱권 재구매)
9) 기타 반품 불가 품목 - 잡지, 테이프, 대학입시자료, 사진집, 방통대 교재, 교과서, 만화, 미디어전품목, 악보집, 정부간행물, 지도, 각종 수험서, 적성검사자료, 성경, 사전, 법령집, 지류, 필기구류, 시즌상품, 개봉한 상품 등 -
상품 품절
-
소비자 피해보상 환불 지연에 따른 배상
2) 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함
상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)