장바구니 담기 close

장바구니에 상품을 담았습니다.

모던 C#

모던 C#

  • 스티브 러브
  • |
  • 영진닷컴
  • |
  • 2025-04-15 출간
  • |
  • 384페이지
  • |
  • 188 X 257 X 30mm
  • |
  • ISBN 9788931479386
판매가

30,000원

즉시할인가

27,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

1장. 타입 시스템 활용하기
의미 있는 사용자 정의 값 타입을 설계하고, 코드의 가독성과 명확성을 높이는 방법을 다룹니다.

2장. 값 타입과 참조 타입
이 둘의 동작 방식 차이와 메모리 구조, 복사/등치 비교 시의 영향 등을 정리합니다.

3장. 참조 매개변수와 값 매개변수
메서드 호출 시 어떤 방식으로 인자가 전달되는지, 성능과 안전성에 어떤 영향을 미치는지 설명합니다.

4장. 암묵적 복사와 명시적 복사
값 복사에 따른 예기치 않은 결과를 방지하기 위한 전략을 살펴봅니다.

5장. 등치 타입
값의 비교 방식, 안전한 동등성 구현 방법, 컴파일러 기능 활용 팁 등을 다룹니다.

6장. 값의 특성
값 타입이 단순한 저장소를 넘어 의미를 가지는 설계 단위로 기능할 수 있는 조건들을 설명합니다.

7장. 값 타입과 다형성
값 타입에서 상속과 다형성이 어떻게 제한되는지, 그 대안을 중심으로 설명합니다.

8장. 성능과 효율
타입 설계가 애플리케이션 성능에 끼치는 영향과, GC(가비지 컬렉션)를 고려한 최적화 전략을 제시합니다.


역자의 말

프로그래밍에 사용하는 대부분의 개발 언어에서는 “값 타입”(Value type)과 “참조
타입”(Reference type)을 제공합니다. 일반적으로 우리가 알고 있는 값 타입과 참
조 타입의 차이는 다음과 같이 비교할 수 있습니다.

값 타입과 참조 타입의 대략적인 차이는 알고 있지만, 다음 질문에 대답하기는 다
소 어려울 수 있습니다.

● 값 타입과 참조 타입은 왜 구분해야 할까?
● 값 타입과 참조 타입은 문법적 혹은 의미적으로 어떤 차이를 가질까?
● 값 타입 대신 참조 타입, 혹은 참조 타입 대신 값 타입을 사용하면 절대로 안 될까?
● 프로그래밍 언어의 기반 도구(컴파일러 등)들이 타입 문제를 잘 처리해 주는데 굳이
이런 차이를 알아야 할까?

이 책은 C#이 제공하는 값 타입의 문법적, 의미적 특성을 깊게 설명하고 그 사용 방법과 예제를 통해 값 타입과 참조 타입 사이의 막연한 안개를 걷어 내고 싶은 분들에게 명확한 나침반과 지도의 역할을 해줄 것입니다. C#에 국한된 내용을 설명하지만 이 책에서 설명한 개념들을 다른 프로그래밍 언어에도 적용해 본다면 재미있고 의미있는 통찰을 얻는데 도움이 될 것입니다. 여러분이 보다 효율적이고 안정적이며 뛰어난 성능의 프로그램을 작성하는 데 이 책이 도움이 되길 바랍니다.
번역을 통해 좋은 지식을 전할 수 있게 해주신 하나님께 감사드립니다. 그리고 멋진 책을 번역하는 데 참여할 수 있도록 기회를 주신 영진닷컴 관계자 여러분께 감사합니다. 언제나 분주한 가장을 위해 든든한 기도와 지원을 아끼지 않는 아내와 세 딸에게도 감사를 전합니다.

목차

감사의 말
들어가며

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~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.