길벗·이지톡

도서 IT 전문서 프로그래밍/오픈소스

C#, 기초부터 제대로 배우자!

기초부터 활용까지, C# 기본기를 탄탄하게 다진다!

20년 경력 전문가가 선별한 핵심 내용학습 순서로 구성!

Visual Studio 2019 + C# 8.0, 최신 버전으로 배우자.

 

 

C# 교과서는 생애 첫 프로그래밍 언어로 C#을 시작하는 독자를 대상으로 한다. 특히 응용 프로그래머를 위한 C# 입문서로, C#을 사용하여 게임(유니티), , 모바일, IoT 등을 개발할 때 필요한 C# 기초 문법을 익히고 기본기를 탄탄하게 다지는 것이 목적이다. Microsoft MVP이자 20년 경력의 개발/강의 전문가인 저자가 선별한 핵심 내용학습 순서로 설명한다. 또한, 600개가 넘는 코드 조각과 실습 예제를 직접 실행하며 실력을 향상시킬 수 있다. C#을 접한 적이 있는 독자라도 알고 있는 내용을 한 번 더 정리할 기회가 될 것이다. 출간 이후 저자 블로그(dotnetkorea.com)에서 제공하는 실시간 온라인 강의(유튜브로 진행, 저자 블로그 공지) 등도 놓치지 말자.

목차

1C# 준비

01 C# 프로그래밍 언어 이해하기

__1.1 프로그래밍 언어 알아보기

__1.2 C# 소개하기

__1.3 닷넷 생태계

__1.4 책에서 다루는 범위

02 C# 개발 환경 구축하기: 비주얼 스튜디오 설치

__2.1 비주얼 스튜디오 2019 커뮤니티

__2.2 비주얼 스튜디오 2019 커뮤니티 설치하기

03 C# 프로그램 작성하기

__3.1 Hello World 프로그램

__3.2 C#의 기본 코드 구조

04 C# 기본 문법 이해하기

__4.1 출력문

__4.2 주석문(코드 설명문)

__4.3 들여쓰기

__4.4 공백 처리

__4.5 이스케이프 시퀀스

__4.6 자리 표시자

 

2C# 기초

05 변수 만들기

__5.1 변수

__5.2 리터럴 사용하기

__5.3 변수를 만들어 값 저장 후 사용하기

__5.4 변수 선언과 동시에 초기화하기

__5.5 형식이 같은 변수 여러 개를 한 번에 선언하기

__5.6 상수 사용하기

06 숫자 데이터 형식 사용하기

__6.1 숫자 데이터 형식

__6.2 정수 데이터 형식

__6.3 부호 있는 정수 데이터 형식

__6.4 부호 없는 정수 데이터 형식

__6.5 실수 데이터 형식

__6.6 숫자 형식의 리터럴 값에 접미사 붙이기

07 숫자 이외의 데이터 형식 사용하기

__7.1 문자 데이터 형식: char

__7.2 문자열 데이터 형식: string

__7.3 논리 데이터 형식: bool

__7.4 변하지 않는 값: 상수

__7.5 닷넷 데이터 형식

__7.6 래퍼 형식

08 사용자한테 얻은 정보를 변수에 저장하기

__8.1 문자열 입력 관련 메서드

__8.2 형식 변환

__8.3 이진수 다루기

__8.4 var 키워드로 암시적으로 형식화된 로컬 변수 만들기

__8.5 변수의 기본값을 default 키워드로 설정하기

09 연산자 개요 및 단항·산술 연산자 사용하기

__9.1 연산자

__9.2 단항 연산자

__9.3 변환 연산자: ( ) 기호로 데이터 형식 변환하기

__9.4 산술 연산자

__9.5 문자열 연결 연산자

10 할당 연산자와 증감 연산자 사용하기

__10.1 할당 연산자

__10.2 증감 연산자

11 관계형 연산자와 논리 연산자 사용하기

__11.1 관계형 연산자

__11.2 논리 연산자

12 비트 연산자와 시프트 연산자로 비트 단위 연산하기

__12.1 비트 연산자

__12.2 시프트 연산자

__12.3 기타 연산자

__12.4 연산자 우선순위

13 제어문 소개 및 if/else

__13.1 제어문

__13.2 순차문: 순서대로 실행하기

__13.3 조건문: if 문과 가지치기

__13.4 else

__13.5 else if (다중 if , 조건식 여러 개 처리)

__13.6 조건문(if )을 사용한 조건 처리 전체 정리

14 조건문: switch 문으로 다양한 조건 처리하기

__14.1 switch 문 소개

__14.2 switch 문 사용하기

15 반복문(for )을 사용하여 구간 반복하기

__15.1 for 문으로 반복하기

__15.2 무한 루프

__15.3 for 문으로 1부터 4까지 팩토리얼 값을 출력하는 프로그램

__15.4 구구단을 가로로 출력하기

16 while 문과 do , foreach 문으로 반복 처리하기

__16.1 while

__16.2 피보나치 수열을 while 문으로 표현하기

__16.3 do while 반복문으로 최소 한 번은 실행하기

__16.4 foreach 문으로 배열 반복하기

17 break, continue, goto로 반복문 제어하기

__17.1 break

__17.2 continue 문으로 코드 건너뛰기

__17.3 goto로 프로그램 흐름을 원하는 대로 바꾸기

18 배열 사용하기

__18.1 컬렉션

__18.2 배열

__18.3 배열 선언하기

__18.4 1차원 배열

__18.5 다차원 배열

__18.6 가변 배열

__18.7 var 키워드로 배열 선언하기

19 함수 사용하기

__19.1 함수

__19.2 함수 정의하고 사용하기

__19.3 매개변수와 반환값

__19.4 매개변수가 있는 함수

__19.5 반환값이 있는 함수

__19.6 함수를 사용하여 큰 값과 작은 값, 절댓값 구하기

__19.7 XML 문서 주석을 사용하여 함수 설명 작성하기

__19.8 기본 매개변수

__19.9 명명된 매개변수

__19.10 함수 오버로드: 다중 정의

__19.11 재귀 함수

__19.12 함수 범위: 전역 변수와 지역 변수

__19.13 화살표 함수: =>

__19.14 식 본문 메서드

__19.15 로컬 함수

__19.16 Main 메서드의 명령줄 인수

20 C# 인터렉티브로 출력문부터 함수까지 내용 복습하기

__20.1 C# 인터렉티브

 

3C# 활용

21 닷넷 API

__21.1 닷넷 API 탐색기와 Docs

__21.2 클래스, 구조체, 열거형, 네임스페이스

__21.3 Math 클래스 사용하기

__21.4 클래스 또는 메서드 이름을 문자열로 가져오기: nameof 연산자

22 구조체 사용하기

__22.1 구조체란?

__22.2 구조체 만들기

__22.3 구조체 선언 및 사용하기

__22.4 구조체 배열

__22.5 구조체 매개변수: 함수의 매개변수에 구조체 사용하기

__22.6 내장형 구조체

23 열거형 형식 사용하기

__23.1 열거형 형식 사용하기

__23.2 열거형 만들기

__23.3 열거형 항목에 상수 값 주기

__23.4 열거형 관련 클래스 사용하기

24 클래스 사용하기

__24.1 클래스 소개하기

__24.2 클래스 만들기

__24.3 클래스 여러 개 만들기

__24.4 클래스 시그니처

__24.5 자주 사용하는 내장 클래스

__24.6 Environment 클래스로 프로그램 강제 종료하기

__24.7 환경 변수 사용하기

__24.8 EXE 파일 실행하기

__24.9 Random 클래스

__24.10 프로그램 실행 시간 구하기

__24.11 정규식

__24.12 닷넷에 있는 엄청난 양의 API

__24.13 값 형식과 참조 형식

__24.14 박싱과 언박싱

__24.15 is 연산자로 형식 비교하기

__24.16 as 연산자로 형식 변환하기

__24.17 패턴 매칭: if 문과 is 연산자 사용하기

25 문자열 다루기

__25.1 문자열 다루기

__25.2 문자열 처리 관련 주요 API 살펴보기

__25.3 StringBuilder 클래스를 사용하여 문자열 연결하기

__25.4 StringStringBuilder 클래스의 성능 차이 비교하기

26 예외 처리하기

__26.1 예외와 예외 처리

__26.2 try~catch~finally 구문

__26.3 Exception 클래스로 예외 처리하기

__26.4 예외 처리 연습하기

__26.5 throw 구문으로 직접 예외 발생시키기

27 컬렉션 사용하기

__27.1 배열과 컬렉션

__27.2 리스트 출력 구문

__27.3 Array 클래스

__27.4 컬렉션 클래스

__27.5 Stack 클래스

__27.6 Queue 클래스

__27.7 ArrayList 클래스

__27.8 Hashtable 클래스

28 제네릭 사용하기

__28.1 Cup of T

__28.2 Stack 제네릭 클래스 사용하기

__28.3 List<T> 제네릭 클래스 사용하기

__28.4 Enumerable 클래스로 컬렉션 만들기

__28.5 Dictionary<T, T> 제네릭 클래스 사용하기

29 (null) 다루기

__29.1 null

__29.2 null 가능 형식: Nullable<T> 형식

__29.3 null 값을 다루는 연산자 소개하기

30 LINQ

__30.1 LINQ 개요

__30.2 확장 메서드 사용하기

__30.3 화살표 연산자와 람다 식으로 조건 처리

__30.4 데이터 정렬과 검색

__30.5 메서드 구문과 쿼리 구문

__30.6 Select( ) 확장 메서드를 사용하여 새로운 형태로 가공하기

__30.7 ForEach( ) 메서드로 반복 출력하기

31 알고리즘과 절차 지향 프로그래밍

__31.1 알고리즘

__31.2 합계 구하기: SUM 알고리즘

__31.3 개수 구하기: COUNT 알고리즘

__31.4 평균 구하기: AVERAGE 알고리즘

__31.5 최댓값 구하기: MAX 알고리즘

__31.6 최솟값 구하기: MIN 알고리즘

__31.7 근삿값 구하기: NEAR 알고리즘

__31.8 순위 구하기: RANK 알고리즘

__31.9 순서대로 나열하기: SORT 알고리즘

__31.10 특정 값 검색하기: SEARCH 알고리즘

__31.11 배열을 하나로 합치기: MERGE 알고리즘

__31.12 최빈값 구하기: MODE 알고리즘

__31.13 그룹화하기: GROUP 알고리즘

32 개체 만들기

__32.1 클래스와 개체

__32.2 개체와 인스턴스

__32.3 인스턴스 메서드

__32.4 익명 형식

__32.5 정적 멤버와 인스턴스 멤버

__32.6 프로젝트에 클래스를 여러 개 사용하기

__32.7 ToString( ) 메서드 오버라이드

__32.8 클래스 배열

__32.9 var 키워드를 사용하여 클래스의 인스턴스 생성하기

33 네임스페이스

__33.1 네임스페이스

__33.2 네임스페이스 만들기

__33.3 using 지시문

34 필드 만들기

__34.1 필드

__34.2 액세스 한정자

__34.3 여러 가지 형태의 필드 선언, 초기화, 참조 구현하기

35 생성자

__35.1 생성자

__35.2 매개변수가 있는 생성자 만들기

__35.3 클래스에 생성자 여러 개 만들기

__35.4 정적 생성자와 인스턴스 생성자

__35.5 this( ) 생성자로 다른 생성자 호출하기

__35.6 생성자를 사용하여 읽기 전용 필드 초기화

__35.7 식 본문 생성자

36 소멸자

__36.1 종료자

__36.2 가비지 수집기

__36.3 생성자, 메서드, 소멸자 실행 시점 살펴보기

__36.4 소멸자를 사용한 클래스 역할 마무리하기

__36.5 생성자, 메서드, 소멸자 함께 사용하기

37 메서드와 매개변수

__37.1 메서드

__37.2 메서드의 매개변수 전달 방식

__37.3 가변 길이 매개변수

__37.4 메서드 본문을 줄여 표현하기

__37.5 선택적 매개변수

38 속성 사용하기

__38.1 속성

__38.2 접근자와 전체 속성

__38.3 자동으로 구현된 속성

__38.4 자동 속성 이니셜라이저

__38.5 읽기 전용 속성과 쓰기 전용 속성

__38.6 속성의 여러 가지 유형 살펴보기

__38.7 속성을 사용한 클래스의 멤버 설정 및 참조하기

__38.8 화살표 연산자로 속성과 메서드를 줄여서 표현하기

__38.9 개체 이니셜라이저

__38.10 자동 속성을 사용하여 레코드 클래스 구현하기

__38.11 nameof 연산자

__38.12 익명 형식

__38.13 익명 형식과 덕 타이핑

__38.14 생성자로 속성에 대한 유효성 검사 구현하기

__38.15 메서드로 속성 값 초기화하기

__38.16 속성에서 ?.?? 연산자를 함께 사용하기

39 인덱서와 반복기

__39.1 인덱서

__39.2 인덱서를 사용하여 배열 형식의 개체 만들기

__39.3 문자열 매개변수를 받는 인덱서 사용하기

__39.4 반복기와 yield 키워드

40 대리자

__40.1 대리자(위임/델리게이트)

__40.2 대리자를 사용하여 메서드 대신 호출하기

__40.3 대리자를 사용하여 메서드 여러 개를 다중 호출하기

__40.4 무명 메서드

__40.5 메서드의 매개변수에 대리자 형식 사용하기

__40.6 Action, Func, Predicate 대리자

__40.7 메서드의 매개변수로 메서드 전달하기

41 이벤트

__41.1 이벤트

__41.2 이벤트와 대리자를 사용하여 메서드 등록 및 호출하기

42 클래스 기타

__42.1 부분 클래스

__42.2 정적 클래스

__42.3 필드에 public을 붙여 외부 클래스에 공개하기

__42.4 함수형 프로그래밍 스타일: 메서드 체이닝

__42.5 불변 형식

43 상속으로 클래스 확장하기

__43.1 클래스 상속하기

__43.2 부모 클래스와 자식 클래스

__43.3 Base 클래스와 Sub 클래스

__43.4 Object 클래스 상속

__43.5 부모 클래스 형식 변수에 자식 클래스의 개체 할당하기

__43.6 상속은 영어로 is a(is an) 관계를 표현

__43.7 thisthis( ) 그리고 basebase( )

__43.8 봉인 클래스

__43.9 추상 클래스

__43.10 자식 클래스에만 멤버 상속하기

__43.11 기본 클래스의 멤버 숨기기

44 메서드 오버라이드

__44.1 메서드 오버라이드: 재정의

__44.2 상속 관계에서 메서드 오버라이드

__44.3 메서드 오버로드와 오버라이드

__44.4 메서드 오버라이드 봉인

__44.5 ToString( ) 메서드 오버라이드

__44.6 메서드 오버라이드로 메서드 재사용하기

45 인터페이스

__45.1 인터페이스

__45.2 인터페이스 형식 개체에 인스턴스 담기

__45.3 생성자의 매개변수에 인터페이스 사용하기

__45.4 인터페이스를 사용한 다중 상속 구현하기

__45.5 명시적인 인터페이스 구현하기

__45.6 인터페이스와 추상 클래스 비교하기

__45.7 IEnumerator 인터페이스 사용하기

__45.8 IDisposable 인터페이스 사용하기

__45.9 인터페이스를 사용하여 멤버 이름 강제로 적용하기

46 특성과 리플렉션

__46.1 특성

__46.2 Obsolete 특성 사용하기

__46.3 특성의 매개변수

__46.4 [Conditional] 특성 사용하기

__46.5 특성을 사용하여 메서드 호출 정보 얻기

__46.6 사용자 지정 특성 만들기

__46.7 리플렉션

__46.8 TypeAssembly 클래스

__46.9 특정 클래스의 메서드와 속성을 동적으로 호출하기

__46.10 Type 클래스로 클래스의 멤버 호출하기

__46.11 특정 속성에 적용된 특성 읽어 오기

__46.12 TypeActivator 클래스로 개체의 인스턴스를 동적 생성하기

47 개체와 개체 지향 프로그래밍

__47.1 개체 지향 프로그래밍 소개하기

__47.2 현실 세계의 자동차 설계도 및 자동차 개체 흉내 내기

__47.3 개체 지향 프로그래밍의 네 가지 큰 개념

__47.4 캡슐화를 사용하여 좀 더 세련된 프로그램 만들기

__47.5 다형성 기법을 사용하여 프로그램 융통성 높이기

__47.6 클래스의 멤버 종합 연습: 자동차 클래스 구현하기

 

4C# 확장 기능

48 제네릭 클래스 만들기

__48.1 사용자 정의 클래스를 매개변수로 사용하는 제네릭 클래스

__48.2 사전 제네릭 클래스 소개

__48.3 제네릭 인터페이스

__48.4 제네릭 클래스 만들기

49 확장 메서드 만들기

__49.1 확장 메서드

__49.2 확장 메서드로 문자열 기능 확장하기

__49.3 확장 메서드로 기존 형식에 새로운 메서드 추가하기

__49.4 확장 메서드를 사용하여 형식에 메서드 추가하기

50 동적 형식

__50.1 dynamic 키워드

__50.2 dynamic 변수로 런타임할 때 데이터 형식 결정하기

__50.3 동적 바인딩

__50.4 확장 메서드와 dynamic

51 튜플

__51.1 튜플

52 클래스 라이브러리와 닷넷 스탠다드

__52.1 클래스 라이브러리 프로젝트

__52.2 어셈블리

__52.3 닷넷 스탠다드 프로젝트로 자신만의 라이브러리 만들기

53 테스트 프로젝트와 단위 테스트

__53.1 자동 테스트

__53.2 테스트 프로젝트 생성 및 Assert 클래스 사용하기

__53.3 Dul 프로젝트를 테스트하는 테스트 코드 작성 및 실행하기

54 NuGet 패키지

__54.1 패키지 관리자와 NuGet

__54.2 자신만의 NuGet 패키지 만들기

__54.3 내가 만든 NuGet 패키지 사용하기

55 스레드

__55.1 스레드

__55.2 스레드 생성 및 호출하기

__55.3 다중 스레드를 사용한 메서드 함께 호출하기

__55.4 스레드 동기화

__55.5 병렬 프로그래밍

56 비동기 프로그래밍

__56.1 동기 프로그래밍

__56.2 비동기 프로그래밍

__56.3 비동기 Main( ) 메서드

__56.4 간단한 asyncawait 키워드 사용 예제

__56.5 Task.Run( ) 메서드로 비동기 메서드 호출하기

__56.6 Task.FromResult( )를 사용하여 비동기로 반환값 전달하기

__56.7 asyncawait를 사용한 C# 비동기 프로그래밍하기

57 인메모리 데이터베이스 프로그래밍 맛보기

__57.1 인메모리 데이터베이스

__57.2 CRUD 작업하기

__57.3 리포지토리 패턴

__57.4 인메모리 데이터베이스를 만들고 CRUD 작업 수행하기

58 스트림과 파일 입출력 맛보기

__58.1 System.IO 네임스페이스

__58.2 문자열에서 파일 이름 추출하기

__58.3 Path 클래스로 파일 이름 및 확장자, 폴더 정보 얻기

__58.4 파일과 디렉터리 관련 클래스

__58.5 텍스트 데이터를 컬렉션 데이터로 가져오기

59 XMLJSON 맛보기

__59.1 XElement 클래스를 사용하여 XML 요소를 생성하거나 가공하기

__59.2 JSON 데이터 직렬화 및 역직렬화하기

60 네트워크 프로그래밍 맛보기

__60.1 HttpClient 클래스로 웹 데이터 가져오기

61 함수와 함수형 프로그래밍 소개하기

__61.1 함수형 프로그래밍

__61.2 문과 식

__61.3 고차 함수

__61.4 LINQ로 함수형 프로그래밍 스타일 구현하기

62 모던 C#

__62.1 C#의 새로운 기능

__62.2 패턴 매칭하기

__62.3 C# 8.0 버전의 기능을 테스트 프로젝트에서 실행하기

__62.4 C# 8.0 버전의 새로운 기능 열 가지 소개하기

 

부록 A 디버거 사용하기

부록 B 팁과 트릭

 

 

 

더보기접기

저자

ㆍ지은이 박용준

저자소개

Microsoft MVP

Visual Studio 분야 Microsoft 공인 강사(MCT)를 거쳐 2006년부터 연속해서 Developer Technologies 분야 Microsoft MVP로 활동 중이다. 수많은 .NET 프로젝트를 거쳐 현재는 하와소(hawaso) 대표로 소프트웨어 개발과 강의를 병행하고 있다.

TechDays, DevOpsCamp 등 다양한 기술 세미나의 스피커로 활동하며 다수의 책을 집필하고 번역에 참여했다. 또한, Taeyo.NET, ASP.NET Korea 커뮤니티 운영진이기도 하다.

 

블로그 닷넷코리아 dotnetkorea.com

 

 

유튜브 비주얼아카데미 youtube.com/c/VisualAcademy

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.