• 시작하세요! C# 6.0 프로그래밍
  • 기본 문법부터 실전 예제까지

  • 정성태 지음

  • 프로그래밍 & 프랙티스 시리즈_011
  • ISBN: 9791158390075
  • 27,000원 | 2015년 08월 4일 발행 | 752쪽



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

이 책을 덮으면서 이제 한 가지를 결정해야 한다.

  • 더 공부할 것인가?
  • 아니면 뭔가를 만들어 볼 것인가?

더 공부하면 그만큼 알게 되어 나중에 만들고 싶은 프로그램이 있을 때 시행착오를 덜 겪으면서 편하게 작업할 수 있다. 반면 뭔가를 만들게 된다면 부족한 지식으로 인해 초기에 어려움을 겪겠지만 만들어질 프로그램에 필요한 사항을 빠르게 습득한다는 점과 자신만의 프로그램을 완성해 봄으로써 얻어지는 독특한 경험이 남는다.

프로그래밍은 만드는 재미도 있고, 공부하는 재미도 있다. 결정을 내렸으면 이제부터 그냥 재미에 푹 빠져들면 된다.

[소스코드 다운로드 & 홈페이지]

이 책에서 설명한 소스를 내려받거나, 읽으면서 문의사항이 생기면 아래 사이트를 방문해서 해결할 수 있다.

http://www.sysnet.pe.kr

정성태

C/C++ 경력을 시작으로 ㈜닷넷엑스퍼트에서 7년 넘게 다양한 분야의 응용 프로그램 개발을 한 후 현재는 ㈜제니퍼소프트에서 성능 관리 솔루션의 닷넷 버전 개발을 담당하고 있다. 개인적으로는 블로그(http://www.sysnet.pe.kr)를 통해 개발 관련 지식을 공유하고 있으며, 2004년부터 C/C++, C# 분야에서 마이크로소프트의 MVP로 활동하고 있다.

  • [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부] 닷넷 응용 프로그램
  • [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 _ 참고 자료

3부의 내용을 담은 PDF 파일은 다음의 경로에서 다운로드 받을 수 있습니다.