컨텐츠상세보기

시작하세요! C# 10 프로그래밍
시작하세요! C# 10 프로그래밍
  • 저자<정성태> 저
  • 출판사위키북스
  • 출판일2023-01-30
  • 등록일2023-08-08
보유 1, 대출 0, 예약 0, 누적대출 5, 누적예약 1

책소개

이 책의 목표는 여러분이 C#을 이용해 프로그래밍 기초를 탄탄하게 다질 수 있게 하는 것이다. 이를 위해 C# 언어의 최신 버전인 C# 10의 문법까지 구체적인 예제와 함께 상세히 설명하며, 단순히 언어의 문법을 습득하는 데 그치지 않고 실제로 프로그램을 제작할 수 있는 단계까지 학습할 수 있게 구성했다. 이번 개정판에서는 C# 10에서 개선된 다양한 언어적 특성을 다룬다. (레코드/구조체/네임스페이스 개선, 보간된 상수 문자열, 확장 속성 패턴, 람다 기능 향상, 호출자 인수 식)

저자소개

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

목차

[1부] C#

▣ 01장: 들어가면서

1.1  닷넷 프레임워크  
__1.1.1  닷넷 호환 언어  
__1.1.2  공통 중간 언어  
__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#과 닷넷 프레임워크의 관계  
1.2  닷넷 코어와 닷넷 표준  
1.3  닷넷 5(.NET 5), 닷넷 6  

▣ 02장: 개발 환경 준비
2.1  기본 예제  
2.2  편집기 + 명령행 컴파일러 사용  
__2.2.1  닷넷 프레임워크 명령행  
__2.2.2  닷넷 6 명령행  
2.3  비주얼 스튜디오 개발 환경  
2.4  두 가지 유형의 예제 코드
2.5  윈도우 운영체제 이외의 개발 환경  
2.6  닷넷 역컴파일러  

▣ 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  두 가지 저장소: 스택과 힙  
____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  고정 크기 버퍼: fixed  
____5.1.3.7  스택을 이용한 값 형식 배열: 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  

[2부] C# 고급 문법

▣ 07장: C# 2.0

7.1  제네릭  
__7.1.1  형식 매개변수에 대한 제약 조건  
__7.1.2  BCL에 적용된 제네릭  
7.2  ?? 연산자(null 병합 연산자)  
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  Async 메서드가 아닌 경우의 비동기 처리  
__10.2.5  비동기 호출의 병렬 처리  

▣ 11장: C# 6.0
11.1  자동 구현 속성의 초기화 구문 추가  
11.2  표현식을 이용한 메서드, 속성 및 인덱서 정의  
11.3  using static 구문을 이용한 타입명 생략  
11.4  null 조건 연산자  
11.5  문자열 내에 식(expression)을 포함  
11.6  nameof 연산자  
11.7  Dictionary 타입의 인덱스 초기화  
11.8  예외 필터  
11.9  컬렉션 초기화 구문에 확장 메서드로 정의한 Add 지원  
11.10  기타 개선 사항

▣ 12장: C# 7.0
12.1  더욱 편리해진 out 매개변수 사용  
12.2  반환값 및 로컬 변수에 ref 기능 추가(ref returns and locals)  
12.3  튜플  
12.4  Deconstruct 메서드  
12.5  람다 식을 이용한 메서드 정의 확대(Expression-bodied members)  
12.6  로컬 함수(Local functions)  
12.7  사용자 정의 Task 타입을 async 메서드의 반환 타입으로 사용 가능  
12.8  자유로워진 throw 사용  
12.9  리터럴에 대한 표현 방법 개선  
12.10  패턴 매칭  
__12.10.1  is 연산자의 패턴 매칭  
__12.10.2  switch/case 문의 패턴 매칭 

▣ 13장: C# 7.1
13.1  Main 메서드에 async 예약어 허용  
13.2  default 리터럴 추가  
13.3  타입 추론을 통한 튜플의 변수명 자동 지정  
13.4  기타 개선 사항 

▣ 14장: C# 7.2
14.1  메서드의 매개변수에 in 변경자 추가  
14.2  읽기 전용(readonly) 구조체  
14.3  메서드의 반환 값 및 로컬 변수에 ref readonly 추가  
14.4  스택에만 생성할 수 있는 값 타입 지원 - ref struct  
14.5  신규 추가 타입: Span〈T〉  
14.6  3항 연산자에 ref 지원  
14.7  private protected 접근자 추가  
14.8  숫자 리터럴의 선행 밑줄  
14.9  뒤에 오지 않는 명명된 인수 

▣ 15장: C# 7.3
15.1  신규 제네릭 제약 조건 - Delegate, Enum, unmanaged  
15.2  사용자 정의 타입에 fixed 적용 가능  
15.3  힙에 할당된 고정 크기 배열의 인덱싱 개선  
15.4  초기화 식에서 변수 사용 가능  
15.5  자동 구현 속성의 특성 지원  
15.6  튜플의 ==, != 연산자 지원  
15.7  ref 지역 변수의 재할당 가능  
15.8  stackalloc 배열의 초기화 구문 지원  

▣ 16장: C# 8.0
16.1 #nullable 지시자와 nullable 참조 형식  
__16.1.1  null일 수 없음을 보장  
__16.1.2  null일 수 있다면 해당 인스턴스를 null 가능한 타입이라고 명시  
__16.1.3  널 가능(Nullable) 문맥 제어  
16.2  비동기 스트림  
16.3  새로운 연산자 - 인덱스, 범위  
16.4  간결해진 using 선언  
16.5  Dispose 호출이 가능한 ref struct  
16.6  정적 로컬 함수  
16.7  패턴 매칭 개선  
__16.7.1  switch 식  
__16.7.2  속성 패턴  
__16.7.3  튜플 패턴  
__16.7.4  위치 패턴  
__16.7.5  재귀 패턴  
16.8  기본 인터페이스 메서드  
16.9  ??= (널 병합 할당 연산자)  
16.10  문자열 @, $ 접두사 혼합 지원  
16.11  기본 식(primary expression)으로 바뀐 stackalloc  
16.12  제네릭 구조체의 unmanaged 지원  
16.13  구조체의 읽기 전용 메서드  

▣ 17장: C# 9.0
17.1  레코드(Records) 
__17.1.1  init 설정자 추가
__17.1.2  with 초기화 구문 추가
17.2  대상으로 형식화된 new 식(Target-typed new expressions) 
17.3  달라진 조건식 평가
17.4  로컬 함수에 특성 지정 가능(Attributes on local functions) 
17.5  익명 함수 개선
__17.5.1 정적 익명 함수(static anonymous functions) 
__17.5.2 익명 함수의 매개변수 무시 
17.6  최상위 문(Top-level statements) 
17.7  패턴 일치 개선 사항(Pattern matching enhancements)
17.8  모듈 이니셜라이저(Module initializers) 
17.9  공변 반환 형식(Covariant return types) 
17.10  foreach 루프에 대한 GetEnumerator 확장 메서드 지원(Extension GetEnumerator) 
17.11  부분 메서드에 대한 새로운 기능(New features for partial methods)
17.12  localsinit 플래그 내보내기 무시(Suppress emitting localsinit flag) 
17.13  원시 크기 정수(Native ints) 
17.14  함수 포인터(Function pointers) 
__17.14.1  비관리 함수 포인터 지원
__17.14.2  비관리 함수를 통한 콜백 지원 
17.15  제약 조건이 없는 형식 매개변수 주석(Unconstrained type parameter annotations)

▣ 18장: C# 10
18.1  레코드 개선 
__18.1.1  레코드 구조체(Record structs) 
__18.1.1  class 타입의 record에 ToString 메서드의 sealed 지원 
18.2 구조체 개선 
__18.2.1  매개변수가 없는 구조체 생성자(Parameterless struct constructors) 
__18.2.2  필드 초기화 지원 
18.3  네임스페이스 개선 
__18.3.1  전역 using 지시문(Global Using Directive) 
__18.3.2  파일 범위 네임스페이스(File Scoped Namespaces) 
18.4  보간된 상수 문자열(Constant Interpolated Strings) 
18.5  확장 속성 패턴(Extended property patterns) 
18.6  람다 기능 향상(Lambda improvements) 
__18.6.1  특성 허용 
__18.6.2  반환 타입 지정 
__18.6.3  람다 식의 var 추론 
18.7  호출자 인수 식(CallerArgumentExpression) 
18.8  기타 개선 사항 
__18.8.1  한정된 할당 분석 개선(Improved Definite Assignment Analysis) 
__18.8.2  보간된 문자열 개선(Improved Interpolated Strings) 
__18.8.3  분해 구문에서 기존 변수의 재사용 가능(Mix Declarations and Variables
in Deconstruction) 
__18.8.4  AsyncMethodBuilder 재정의 
__18.8.5  Source Generator V2 API 
__18.8.6  향상된 #line 지시문(Enhanced #line directives) 
그리고 C# 11

[3부] 닷넷 응용 프로그램
http://www.sysnet.pe.kr/2/0/12021 및 출판사의 공식 홈페이지를 통해 내용이 모두 공개돼 있으니 참고하자.

▣ 부록
http://www.sysnet.pe.kr/2/0/13101 및 출판사의 공식 홈페이지를 통해 내용이 모두 공개돼 있으니 참고하자.