티스토리 뷰


프로그래밍 언어와 더불어 한국어 실력에 감탄하게 되는 저자입니다.
이 책의 목표는 확실하다. 여러분들이 프로그램을 만들고자 할 때 사용하게 될 프로그래밍 언어인 C#의 기초를 단단하게 다질 수 있도록 이 책을 구성했다. C# 언어를 최신의 6.0 문법까지 설명하고 있으며, 나아가 단순히 언어의 문법 습득에 그치지 않고 실제로 프로그램을 제작할 수 있는 단계까지 학습할 수 있게 내용을 구성했다.

[01부] C#

▣ 01장: 들어가면서
__1.1 닷넷 프레임워크
____1.1.1 닷넷 호환 언어
____1.1.2 공통 중간 언어(CIL: Common Intermediate Language)
____1.1.3 공용 타입 시스템
____1.1.4 공용 언어 사양
____1.1.5 메타데이터
____1.1.6 어셈블리, 모듈, 매니페스트
____1.1.7 공용 언어 기반구조
____1.1.8 공용 언어 런타임
____1.1.9 닷넷 프레임워크
____1.1.10 C#과 닷넷 프레임워크의 관계

▣ 02장: 개발 환경 준비
__2.1 기본 예제
__2.2 편집기 + 명령행 컴파일러 사용
__2.3 모노 개발 환경
__2.4 비주얼 스튜디오 개발 환경
__2.5 닷넷 역컴파일러

▣ 03장: C# 기초
__3.1 기본 자료형
____3.1.1 정수형 기본 타입
____3.1.2 실수형 기본 타입
____3.1.3 문자형 기본 타입
____3.1.4 불린(boolean)형 기본 타입
____3.1.5 마치며
__3.2 형변환
____3.2.1 암시적 변환
____3.2.2 명시적 변환
__3.3 기본 문법 요소
____3.3.1 예약어, 키워드
____3.3.2 식별자
____3.3.3 리터럴
__3.3.4 변수
____3.3.4.1 2가지 저장소: 스택과 힙
____3.3.4.2 값 형식을 가리키는 변수
____3.3.4.3 참조 형식을 가리키는 변수
____3.3.4.4 기본값
____3.3.5 상수
____3.3.6 연산자, 문장 부호
__3.4 배열
____3.4.1 다차원 배열
____3.4.2 가변 배열
__3.5 제어문
____3.5.1 선택문
______3.5.1.1 관계 연산자, 논리 연산자
______3.5.1.2 if 문
______3.5.1.3 switch 문
____3.5.2 반복문
______3.5.2.1 증감 연산자, 복합 대입 연산자
______3.5.2.2 for 문
______3.5.2.3 중첩 루프
______3.5.2.4 foreach 문
______3.5.2.5 while 문
____3.5.3 점프문
______3.5.3.1 break 문
______3.5.3.2 continue 문
______3.5.3.3 goto 문

▣ 04장: C# 객체 지향 문법
__4.1 클래스
____4.1.1 필드
____4.1.2 메서드
______4.1.2.1 중복 코드 제거
______4.1.2.2 코드 추상화
____4.1.3 생성자
____4.1.4 소멸자
____4.1.5 정적 멤버, 인스턴스 멤버
______4.1.5.1 정적 필드
______4.1.5.2 정적 메서드
______4.1.5.3 정적 생성자
____4.1.6 네임스페이스
__4.2 캡슐화
____4.2.1 접근 제한자
____4.2.2 정보 은닉
____4.2.3 프로퍼티
__4.3 상속
____4.3.1 형변환
______4.3.1.1 as, is 연산자
____4.3.2 모든 타입의 조상: System.Object
______4.3.2.1 ToString
______4.3.2.2 GetType
______4.3.2.3 Equals
______4.3.2.4 GetHashCode
____4.3.3 모든 배열의 조상: System.Array
____4.3.4 this
______4.3.4.1 this와 인스턴스/정적 멤버의 관계
____4.3.5 base
__4.4 다형성
____4.4.1 메서드 오버라이드
______4.4.1.1 base를 이용한 메서드 재사용
______4.4.1.2 object 기본 메서드 확장
____4.4.2 오버로드
______4.4.2.1 메서드 오버로드
______4.4.2.2 연산자 오버로드
______4.4.2.3 클래스 간의 형변환
__4.5 C#의 클래스 확장
____4.5.1 타입 유형 확장
______4.5.1.1 중첩 클래스
______4.5.1.2 추상 클래스
______4.5.1.3 델리게이트
______4.5.1.4 인터페이스
______4.5.1.5 구조체
______4.5.1.6 열거형
____4.5.2 멤버 유형 확장
______4.5.2.1 읽기 전용 필드
______4.5.2.2 상수
______4.5.2.3 이벤트
______4.5.2.4 인덱서

▣ 05장: C# 1.0 완성하기
__5.1 문법 요소
____5.1.1 구문
______5.1.1.1 전처리기 지시문
______5.1.1.2 지역 변수의 유효 범위
______5.1.1.3 리터럴에도 적용되는 타입
______5.1.1.4 특성
____5.1.2 연산자
______5.1.2.1 시프트 연산자
______5.1.2.2 비트 논리 연산자
______5.1.2.3 연산자 우선순위
____5.1.3 예약어
______5.1.3.1 연산 범위 확인: checked, unchecked
______5.1.3.2 가변 매개변수: params
______5.1.3.3 Win32 API 호출: extern
______5.1.3.4 안전하지 않은 컨텍스트: unsafe
______5.1.3.5 참조 형식의 멤버에 대한 포인터: fixed
______5.1.3.6 스택을 이용한 값 형식 배열: stackalloc
__5.2 프로젝트 구성
____5.2.1 다중 소스코드 파일
____5.2.2 라이브러리
______5.2.2.1 csc.exe로 라이브러리 생성 및 사용하기
______5.2.2.2 비주얼 스튜디오에서 라이브러리 생성 및 사용하기
____5.2.3 응용 프로그램 구성 파일: app.config
______5.2.3.1 supportedRuntime
______5.2.3.2 appSettings
____5.2.4 디버그 빌드와 릴리즈 빌드
______5.2.4.1 DEBUG, TRACE 전처리 상수
______5.2.4.2 Debug 타입과 Trace 타입
______5.2.5 플랫폼(x86, x64, AnyCPU) 선택
____5.2.6 버전 관리
______5.2.6.1 어셈블리의 버전과 이름
______5.2.6.2 공개키 토큰과 어셈블리 서명
______5.2.6.3 전용 어셈블리, 전역 어셈블리
__5.3 예외
____5.3.1 예외 타입
____5.3.2 예외 처리기
____5.3.3 호출 스택
____5.3.4 예외 발생
____5.3.5 사용자 정의 예외 타입
____5.3.6 올바른 예외 처리
__5.4 힙과 스택
____5.4.1 스택
______5.4.1.1 스택 오버플로
______5.4.1.2 재귀 호출
____5.4.2 힙
______5.4.2.1 박싱 / 언박싱
______5.4.2.2 가비지 수집기
______5.4.2.3 전체 가비지 수집
______5.4.2.4 대용량 객체 힙
______5.4.2.5 자원 해제
______5.4.2.6 소멸자

▣ 06장: BCL(Base Class Library)
__6.1 시간
____6.1.1 System.DateTime
____6.1.2 System.TimeSpan
____6.1.3 System.Diagnostics.Stopwatch
__6.2 문자열 처리
____6.2.1 System.String
____6.2.2 System.Text.StringBuilder
____6.2.3 System.Text.Encoding
____6.2.4 System.Text.RegularExpressions.Regex
__6.3 직렬화/역직렬화
____6.3.1 System.BitConverter
____6.3.2 System.IO.MemoryStream
____6.3.3 System.IO.StreamWriter / System.IO.StreamReader
____6.3.4 System.IO.BinaryWriter / System.IO.BinaryReader
____6.3.5 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
____6.3.6 System.Xml.Serialization.XmlSerializer
____6.3.7 System.Runtime.Serialization.Json.DataContractJsonSerializer
__6.4 컬렉션
____6.4.1 System.Collections.ArrayList
____6.4.2 System.Collections.Hashtable
____6.4.3 System.Collections.SortedList
____6.4.4 System.Collections.Stack
____6.4.5 System.Collections.Queue
__6.5 파일
____6.5.1 System.IO.FileStream
____6.5.2 System.IO.File / System.IO.FileInfo
____6.5.3 System.IO.Directory / System.IO.DirectoryInfo
____6.5.4 System.IO.Path
__6.6 스레딩
____6.6.1 System.Threading.Thread
____6.6.2 System.Threading.Monitor
____6.6.3 System.Threading.Interlocked
____6.6.4 System.Threading.ThreadPool
____6.6.5 System.Threading.EventWaitHandle
____6.6.6 비동기 호출
____6.6.7 System.Delegate의 비동기 호출
__6.7 네트워크 통신
____6.7.1 System.Net.IPAddress
____6.7.2 포트
____6.7.3 System.Net.IPEndPoint
____6.7.4 System.Net.Dns
____6.7.5 System.Net.Sockets.Socket
______6.7.5.1 UDP 소켓
______6.7.5.2 TCP 소켓
______6.7.5.3 TCP 서버 개선 ? 다중 스레드와 비동기 통신
______6.7.5.4 HTTP 통신
____6.7.6 System.Net.HttpWebRequest
____6.7.7 System.Net.WebClient
__6.8 데이터베이스
____6.8.1 마이크로소프트 SQL 서버
______6.8.1.1 실습용 데이터베이스 준비
______6.8.1.2 SQL 쿼리
____6.8.2 ADO.NET 데이터 제공자
______6.8.2.1 System.Data.SqlClient.SqlConnection
______6.8.2.2 System.Data.SqlClient.SqlCommand
______6.8.2.3 System.Data.SqlClient.SqlDataReader
______6.8.2.4 System.Data.SqlClient.SqlParameter
______6.8.2.5 System.Data.SqlClient.SqlDataAdapter
____6.8.3 데이터 컨테이너
______6.8.3.1 일반 닷넷 클래스
______6.8.3.2 System.Data.DataSet
______6.8.3.3 Typed DataSet
____6.8.4 데이터베이스 트랜잭션
__6.9 리플렉션
____6.9.1 AppDomain과 Assembly
____6.9.2 Type과 리플렉션
____6.9.3 리플렉션을 이용한 확장 모듈 구현
__6.10 기타
____6.10.1 윈도우 레지스트리
____6.10.2 BigInteger
____6.10.3 IntPtr

[02부] C# 고급문법

▣ 07장: C# 2.0
__7.1 제네릭
____7.1.1 형식 매개변수에 대한 제약 조건
____7.1.2 BCL에 적용된 제네릭
__7.2 ?? 연산자
__7.3 default 예약어
__7.4 yield return/break
__7.5 부분(partial) 클래스
__7.6 nullable 형식
__7.7 익명 메서드
__7.8 정적 클래스

▣ 08장: C# 3.0
__8.1 var 예약어
__8.2 자동 구현 속성
__8.3 객체 초기화
__8.4 컬렉션 초기화
__8.5 익명 타입
__8.6 부분 메서드
__8.7 확장 메서드
__8.8 람다 식
____8.8.1 코드로서의 람다 식
______8.8.1.1 람다 식을 위한 전용 델리게이트
______8.8.1.2 컬렉션과 람다 식
____8.8.2 데이터로서의 람다 식
__8.9 LINQ
____8.9.1 where, orderby, group by, join
____8.9.2 표준 쿼리 연산자
____8.9.3 일관된 데이터 조회

▣ 09장: C# 4.0
__9.1 선택적 매개변수와 명명된 인자
__9.2 dynamic 예약어
____9.2.1 리플렉션 개선
____9.2.2 덕 타이핑
____9.2.3 동적 언어와의 타입 연동

▣ 10장: C# 5.0
__10.1 호출자 정보
__10.2 비동기 호출
____10.2.1 닷넷 4.5 BCL에 추가된 Async 메서드
____10.2.2 Task, Task〈TResult〉 타입
____10.2.3 Async 메서드가 아닌 경우의 비동기 처리
____10.2.4 비동기 호출의 병렬 처리

▣ 11장: C# 6.0
__11.1 C# 3.0에 소개된 자동 구현 속성의 초기화 구문 추가
__11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의
__11.3 using static 구문을 이용한 타입명 생략
__11.4 null 조건 연산자
__11.5 문자열 내에 식을 포함
__11.6 nameof 연산자
__11.7 Dictionary 타입의 인덱스 초기화
__11.8 예외 필터
__11.9 catch/finally 블록 내에서 await 사용 가능
__11.10 컬렉션 초기화 구문에 확장 메서드로 정의한 Add 지원
__11.11 #pragma의 CS 접두사 지원
__11.12 재정의된 메서드의 선택 정확도를 향상

[03부] 닷넷 응용 프로그램
* http://www.sysnet.pe.kr/2/0/2923 및 출판사의 공식 홈페이지를 통해 내용 모두 공개

[04부] 부록
__A _ 6.0 Language Specification Version 6.0 문서.71
__B _ C# 6.0 연산자와 문장 부호
__C _ C# 6.0 예약어
__D _ ASCII 코드
__E _ 프로그래밍 기본 지식
____E.1 하드웨어 관련 용어
______E.1.1 중앙 처리 장치(CPU)
______E.1.2 레지스터(Register)
______E.1.3 x86, x64
______E.1.4 멀티 CPU와 멀티 코어
____E.2 운영체제 관련 용어
______E.2.1 도스(DOS)
______E.2.2 윈도우 운영체제
______E.2.3 멀티 태스킹/ 다중 프로세스
______E.2.4 Win32 응용 프로그램 인터페이스(API)
______E.2.5 윈도우 응용 프로그램
______E.2.6 32비트 응용 프로그램
______E.2.7 64비트 응용 프로그램
______E.2.8 윈도우 이외의 운영체제
____E.3 프로그래밍 용어
______E.3.1 기계어
______E.3.2 어셈블리어, 소스코드, 컴파일
______E.3.3 컴파일러, 링커, 빌드
______E.3.4 인터프리터 언어
______E.3.5 저급/고급 프로그래밍 언어
______E.3.6 네이티브 언어
______E.3.7 프로세스 가상 머신(VM)
______E.3.8 가상 머신 지원 언어
__F _ 참고 자료