콘텐츠로 이동

C# 프로그래밍 실습 - 목차

Visual Studio Code와 .NET 10 File-based App을 활용한 C# 프로그래밍 학습서


제1부: 시작하기

1장. 개발 환경 구축

  • 1.1 Visual Studio Code 설치
  • 1.2 .NET 10 SDK 설치 및 확인
  • 1.3 C# 확장 프로그램 설치
  • 1.4 첫 번째 File-based App 만들기
  • 1.5 실행 및 디버깅

2장. C# 기초 문법

  • 2.1 변수와 데이터 타입
  • 2.1.1 기본 데이터 타입 (int, string, bool, double)
  • 2.1.2 var 키워드와 타입 추론
  • 2.1.3 상수 (const)
  • 2.2 연산자
  • 2.2.1 산술 연산자
  • 2.2.2 비교 연산자
  • 2.2.3 논리 연산자
  • 2.2.4 대입 연산자
  • 2.3 콘솔 입출력
  • 2.3.1 Console.WriteLine()
  • 2.3.2 Console.ReadLine()
  • 2.3.3 문자열 보간 (String Interpolation)
  • 2.4 주석 작성하기

3장. 제어문

  • 3.1 조건문
  • 3.1.1 if 문
  • 3.1.2 else if와 else
  • 3.1.3 switch 문과 패턴 매칭
  • 3.1.4 switch 식 (Switch Expression)
  • 3.2 반복문
  • 3.2.1 for 문
  • 3.2.2 while 문
  • 3.2.3 do-while 문
  • 3.2.4 foreach 문
  • 3.3 분기문
  • 3.3.1 break
  • 3.3.2 continue
  • 3.3.3 return

제2부: 데이터 구조와 컬렉션

4장. 배열

  • 4.1 1차원 배열
  • 4.1.1 배열 선언과 초기화
  • 4.1.2 배열 요소 접근
  • 4.1.3 배열 순회
  • 4.2 다차원 배열
  • 4.2.1 2차원 배열
  • 4.2.2 가변 배열 (Jagged Array)
  • 4.3 배열 관련 메서드
  • 4.3.1 Array.Sort()
  • 4.3.2 Array.Reverse()
  • 4.3.3 Array.IndexOf()

5장. 컬렉션

  • 5.1 List
  • 5.1.1 요소 추가 및 제거
  • 5.1.2 요소 검색
  • 5.1.3 정렬과 필터링
  • 5.2 Dictionary
  • 5.2.1 키-값 쌍 추가
  • 5.2.2 키로 값 조회
  • 5.2.3 키 존재 여부 확인
  • 5.3 기타 컬렉션
  • 5.3.1 HashSet
  • 5.3.2 Queue
  • 5.3.3 Stack

6장. 문자열 처리

  • 6.1 문자열 기본 연산
  • 6.1.1 문자열 연결
  • 6.1.2 문자열 비교
  • 6.1.3 문자열 길이
  • 6.2 문자열 메서드
  • 6.2.1 Substring()
  • 6.2.2 Replace()
  • 6.2.3 Split()
  • 6.2.4 Trim(), ToUpper(), ToLower()
  • 6.3 StringBuilder
  • 6.3.1 StringBuilder의 필요성
  • 6.3.2 효율적인 문자열 조작

제3부: 함수와 메서드

7장. 메서드 기초

  • 7.1 메서드 정의와 호출
  • 7.2 매개변수와 반환값
  • 7.2.1 값 타입 매개변수
  • 7.2.2 참조 타입 매개변수
  • 7.2.3 ref와 out 키워드
  • 7.3 메서드 오버로딩
  • 7.4 선택적 매개변수와 명명된 인수
  • 7.5 로컬 함수 (Local Functions)

8장. 고급 메서드 활용

  • 8.1 람다 식 (Lambda Expressions)
  • 8.1.1 람다 식 기본 문법
  • 8.1.2 Func와 Action 델리게이트
  • 8.2 확장 메서드 (Extension Methods)
  • 8.3 재귀 함수

제4부: 객체지향 프로그래밍

9장. 클래스와 객체

  • 9.1 클래스 정의
  • 9.1.1 필드와 속성
  • 9.1.2 메서드
  • 9.1.3 생성자
  • 9.2 객체 생성과 사용
  • 9.3 접근 제한자
  • 9.3.1 public
  • 9.3.2 private
  • 9.3.3 protected
  • 9.3.4 internal
  • 9.4 정적 멤버 (Static Members)
  • 9.4.1 정적 필드와 속성
  • 9.4.2 정적 메서드
  • 9.4.3 정적 생성자

10장. 상속과 다형성

  • 10.1 상속 (Inheritance)
  • 10.1.1 기본 클래스와 파생 클래스
  • 10.1.2 base 키워드
  • 10.1.3 메서드 오버라이딩
  • 10.2 추상 클래스 (Abstract Class)
  • 10.3 인터페이스 (Interface)
  • 10.3.1 인터페이스 정의와 구현
  • 10.3.2 다중 인터페이스 구현
  • 10.3.3 기본 인터페이스 메서드
  • 10.4 다형성 (Polymorphism)

11장. 고급 객체지향 개념

  • 11.1 sealed 클래스와 메서드
  • 11.2 record 타입
  • 11.2.1 record 기본 사용법
  • 11.2.2 with 식을 사용한 비파괴적 변경
  • 11.3 구조체 (Struct)
  • 11.3.1 struct vs class
  • 11.3.2 record struct
  • 11.4 열거형 (Enum)

제5부: 예외 처리와 파일 I/O

12장. 예외 처리

  • 12.1 예외란 무엇인가?
  • 12.2 try-catch-finally
  • 12.2.1 기본 예외 처리
  • 12.2.2 여러 catch 블록
  • 12.2.3 finally 블록
  • 12.3 예외 던지기 (throw)
  • 12.4 사용자 정의 예외
  • 12.5 예외 필터 (Exception Filters)

13장. 파일 입출력

  • 13.1 텍스트 파일 읽기
  • 13.1.1 File.ReadAllText()
  • 13.1.2 File.ReadAllLines()
  • 13.1.3 StreamReader 사용
  • 13.2 텍스트 파일 쓰기
  • 13.2.1 File.WriteAllText()
  • 13.2.2 File.WriteAllLines()
  • 13.2.3 StreamWriter 사용
  • 13.3 파일과 디렉터리 관리
  • 13.3.1 File 클래스
  • 13.3.2 Directory 클래스
  • 13.3.3 Path 클래스
  • 13.4 JSON 데이터 처리
  • 13.4.1 System.Text.Json 소개
  • 13.4.2 JSON 직렬화
  • 13.4.3 JSON 역직렬화

제6부: LINQ와 함수형 프로그래밍

14장. LINQ 기초

  • 14.1 LINQ란?
  • 14.2 쿼리 구문 vs 메서드 구문
  • 14.3 기본 LINQ 연산자
  • 14.3.1 Where (필터링)
  • 14.3.2 Select (투영)
  • 14.3.3 OrderBy / OrderByDescending (정렬)
  • 14.4 집계 연산자
  • 14.4.1 Count, Sum, Average
  • 14.4.2 Min, Max
  • 14.4.3 Aggregate

15장. 고급 LINQ

  • 15.1 조인 연산자
  • 15.1.1 Join
  • 15.1.2 GroupJoin
  • 15.2 그룹화
  • 15.2.1 GroupBy
  • 15.3 집합 연산자
  • 15.3.1 Distinct
  • 15.3.2 Union, Intersect, Except
  • 15.4 지연 실행 (Deferred Execution)
  • 15.5 즉시 실행 (Immediate Execution)

16장. 함수형 프로그래밍 개념

  • 16.1 불변성 (Immutability)
  • 16.2 순수 함수 (Pure Functions)
  • 16.3 고차 함수 (Higher-Order Functions)
  • 16.4 커링 (Currying)과 부분 적용

제7부: 비동기 프로그래밍

17장. 비동기 프로그래밍 기초

  • 17.1 동기 vs 비동기
  • 17.2 async와 await 키워드
  • 17.3 Task와 Task
  • 17.4 비동기 메서드 작성하기
  • 17.5 비동기 메서드 호출과 대기

18장. 고급 비동기 패턴

  • 18.1 여러 Task 다루기
  • 18.1.1 Task.WhenAll
  • 18.1.2 Task.WhenAny
  • 18.2 취소 토큰 (CancellationToken)
  • 18.3 비동기 스트림 (IAsyncEnumerable)
  • 18.4 ConfigureAwait

제8부: 실전 프로젝트

19장. 콘솔 계산기 만들기

  • 19.1 요구사항 분석
  • 19.2 기본 연산 구현
  • 19.3 메뉴 시스템 추가
  • 19.4 예외 처리 및 유효성 검증
  • 19.5 연산 기록 기능

20장. 할 일 관리 앱

  • 20.1 데이터 모델 설계
  • 20.2 할 일 추가, 조회, 수정, 삭제
  • 20.3 파일로 데이터 저장 및 불러오기
  • 20.4 LINQ를 활용한 검색 및 필터링
  • 20.5 우선순위 및 마감일 관리

21장. 간단한 텍스트 기반 게임

  • 21.1 게임 설계
  • 21.2 플레이어와 적 클래스 구현
  • 21.3 전투 시스템
  • 21.4 아이템 시스템
  • 21.5 게임 진행 및 저장

22장. REST API 클라이언트

  • 22.1 HttpClient 소개
  • 22.2 GET 요청으로 데이터 받기
  • 22.3 POST 요청으로 데이터 전송하기
  • 22.4 JSON 데이터 파싱
  • 22.5 실제 공개 API와 연동하기

제9부: .NET 생태계와 도구

23장. NuGet 패키지 관리

  • 23.1 NuGet이란?
  • 23.2 패키지 설치 및 제거
  • 23.3 유용한 NuGet 패키지 소개
  • 23.3.1 Newtonsoft.Json
  • 23.3.2 Serilog
  • 23.3.3 Dapper

24장. 단위 테스트

  • 24.1 단위 테스트란?
  • 24.2 xUnit 설정
  • 24.3 첫 번째 테스트 작성
  • 24.4 Arrange-Act-Assert 패턴
  • 24.5 테스트 데이터와 매개변수화된 테스트
  • 24.6 Moq를 이용한 Mocking

25장. 디버깅과 로깅

  • 25.1 Visual Studio Code 디버거 사용
  • 25.1.1 중단점 (Breakpoints)
  • 25.1.2 변수 검사
  • 25.1.3 조건부 중단점
  • 25.2 로깅
  • 25.2.1 Console.WriteLine vs 로깅 프레임워크
  • 25.2.2 Microsoft.Extensions.Logging
  • 25.2.3 로그 레벨

제10부: 모던 C# 기능

26장. C# 10-14 주요 기능

제1부: C# 10 주요 기능 - 26.1 Global using 지시문 - 26.2 File-scoped 네임스페이스 - 26.3 개선된 람다 식 - 26.4 Record struct - 26.5 필수 속성 (Required Properties)

제2부: C# 11 주요 기능 - 26.6 Raw String Literals (원시 문자열 리터럴) - 26.7 Generic Attributes (제네릭 특성) - 26.8 List Patterns (리스트 패턴) - 26.9 Required Members (필수 멤버) - 26.10 File-local Types (파일 범위 타입) - 26.11 기타 C# 11 개선사항 - 26.12 실전 종합 예제

제3부: C# 12 주요 기능 - 26.13 Primary Constructors (주 생성자) - 26.14 Collection Expressions (컬렉션 식) - 26.15 Default Lambda Parameters (람다 기본 매개변수) - 26.16 Alias Any Type (타입 별칭 확장) - 26.17 Inline Arrays (인라인 배열) - 26.18 ref readonly Parameters - 26.19 실전 종합 예제

제4부: C# 13 주요 기능 - 26.20 params Collections (params 컬렉션) - 26.21 New Lock Type and Semantics (새로운 lock 타입) - 26.22 New Escape Sequence: \e - 26.23 ref struct Types Implement Interfaces - 26.24 Allow ref and unsafe in Async and Iterator Methods - 26.25 Implicit Indexer Access in Object Initializers - 26.26 Overload Resolution Priority - 26.27 실전 종합 예제

제5부: C# 14 프리뷰 기능 - 26.28 Field Keyword (필드 키워드) - 26.29 Extensions (확장 타입) - 26.30 Discriminated Unions (판별된 합 타입) - 26.31 패턴 매칭 개선 - 26.32 성능 최적화 - 26.33 기타 예상 기능 - 26.34 실전 종합 예제

27장. 패턴 매칭

  • 27.1 타입 패턴
  • 27.2 속성 패턴
  • 27.3 위치 패턴
  • 27.4 관계 패턴
  • 27.5 논리 패턴

28장. Nullable 참조 타입

  • 28.1 Nullable 참조 타입이란?
  • 28.2 프로젝트에서 활성화하기
  • 28.3 null 허용 및 불허 타입
  • 28.4 null 병합 연산자 (??, ??=)
  • 28.5 null 조건부 연산자 (?., ?[])

29장. 성능과 메모리 최적화

  • 29.1 Span과 Memory
  • 29.2 ValueTask
  • 29.3 구조체 최적화
  • 29.4 string vs StringBuilder 성능
  • 29.5 컬렉션 선택 가이드

부록

부록 A. C# 버전 히스토리

  • A.1 C# 1.0 ~ 5.0
  • A.2 C# 6.0 ~ 9.0
  • A.3 C# 10 주요 변경사항
  • A.4 C# 11 (2022년) - 문자열과 제네릭의 진화
  • A.5 C# 12 (2023년) - 간결성의 극대화
  • A.6 C# 13 (2024년) - 성능과 유연성
  • A.7 C# 14 (2025년, 프리뷰) - 미래를 향한 진화
  • A.8 C# 11-14 요약표

부록 B. .NET CLI 명령어

  • B.1 프로젝트 관리
  • B.2 빌드와 실행
  • B.3 패키지 관리
  • B.4 테스트 실행

부록 C. Visual Studio Code 단축키

  • C.1 기본 편집
  • C.2 코드 탐색
  • C.3 디버깅
  • C.4 터미널

부록 D. 추가 학습 리소스

  • D.1 공식 문서
  • D.2 온라인 커뮤니티
  • D.3 추천 도서
  • D.4 유용한 웹사이트

마치며

  • 다음 단계로 나아가기
  • 실무 프로젝트 시작하기
  • 계속 학습하는 방법