More actions
imported>nerumin90 No edit summary |
(Repair batch-0001 pages from live compare) |
||
| (36 intermediate revisions by 10 users not shown) | |||
| Line 6: | Line 6: | ||
== 참가자 == | == 참가자 == | ||
* [[신형철]], [[이승현]], [[홍성현]], [[박인서]], [[김상렬]], [[유성현]], [[강민승]] | * [[신형철]], [[이승현]], [[홍성현]], [[박인서]], [[김상렬]], [[유성현]], [[강민승]], [[성훈]] | ||
== 준비물 == | == 준비물 == | ||
* 스터디는 윈도우 환경에서 진행할 예정입니다. | * 스터디는 윈도우 환경에서 진행할 예정입니다. | ||
| Line 19: | Line 18: | ||
** '되도록'이면 수요일 정모 끝난 직후에 진행하기로 결정했습니다. | ** '되도록'이면 수요일 정모 끝난 직후에 진행하기로 결정했습니다. | ||
** 참가 인원 중 한 명이 고정적인 시간을 잡을 수가 없어서 그런 것이니 양해해주세요 Orz... | ** 참가 인원 중 한 명이 고정적인 시간을 잡을 수가 없어서 그런 것이니 양해해주세요 Orz... | ||
* 대략 1시간에서 | ** 상황이 여의치 않으면 스터디 시간은 상시로 바뀔 수 있습니다. | ||
* ~~대략 1시간에서 2시간 정도 진행할 예정입니다.~~ | |||
** 진행하다보니 2시간 꽉 채워서 밖에 안되더군요... | |||
== 목표 == | == 목표 == | ||
* C# 언어에 대한 기본 문법 이해와 적용 | * C# 언어에 대한 기본 문법 이해와 적용 | ||
* C# 1.0에서 최신인 C# 6.0까지의 내용 숙지! | * C# 1.0에서 최신인 C# 6.0까지의 내용 숙지! | ||
* C# | * BCL 라이브러리의 숙지 | ||
== 참고 == | |||
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158390075&orderClick=LEB&Kc=|시작하세요! C# 6.0 프로그래밍] | |||
** 진행 내용 목차도 중간에 약간씩 조정된 것 빼고는 거의 대부분 이 책과 동일합니다. | |||
* [http://www.csharpstudy.com/|C# 프로그래밍 배우기] | |||
== 진행 내용 == | == 진행 내용 == | ||
* [[CS/5월11일]] | * [[CS/5월11일]] | ||
** [[CS/5월11일/부록]] | ** [[CS/5월11일/부록]] | ||
* [[CS/5월25일]] | |||
* [[CS/6월1일]] | |||
* [[CS/6월21일]] | |||
* [[CS/6월28일]] | |||
* [[CS/7월5일]] | |||
* [[CS/7월13일]] | |||
* [[CS/7월17일]] | |||
* CS/7월26일 | |||
** #16 - #17을 재진행했습니다. | |||
** Mutex, Semapore, EventReset, 병렬 프로그래밍을 추가하여 진행했습니다. | |||
== 진행 예정 내용 == | == 진행 예정 내용 == | ||
* 다소 중요하다고 생각된 내용은 | * 다소 중요하다고 생각된 내용은 <font color="#9933ff"><b>보라색 볼드(굵게)</b></font> 처리하였습니다. | ||
** ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~ | ** ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~ | ||
** ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~ | ** ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~ | ||
* #1. 닷넷 프레임워크 살펴보기 | * #1. 닷넷 프레임워크 살펴보기 <font color="#287a63"><b>(5월 11일에 완료)</b></font> | ||
** | ** <font color="#9933ff"><b>닷넷 응용 프로그램의 기본 구조</b></font> | ||
** | ** <font color="#9933ff"><b>CLR과 IL/MSIL(CIL)</b></font> | ||
** 닷넷 호환 언어 | ** 닷넷 호환 언어 | ||
** CTS와 CLS | ** CTS와 CLS | ||
** 메타데이터, 닷넷 응용 프로그램 속의 메타데이터 | ** 메타데이터, 닷넷 응용 프로그램 속의 메타데이터 | ||
** | ** <font color="#9933ff"><b>어셈블리, 모듈</b></font> | ||
** CLI와 CTS, CLI와 닷넷 프레임워크 | ** CLI와 CTS, CLI와 닷넷 프레임워크 | ||
** 닷넷 프레임워크 구성 요소 | ** 닷넷 프레임워크 구성 요소 | ||
| Line 48: | Line 63: | ||
** Naming Convention | ** Naming Convention | ||
* #2. C#의 타입과 문장(Statement), 배열 | * #2. C#의 타입과 문장(Statement), 배열 <font color="#287a63"><b>(5월 11일에 완료)</b></font> | ||
** | ** <font color="#9933ff"><b>자료형과 기본 자료형</b></font> | ||
** | ** <font color="#9933ff"><b>C#에서의 정수 타입, 실수 타입, 문자 타입. 상수</b></font> | ||
** C#에서의 변수 초기화 | ** C#에서의 변수 초기화 | ||
** C#에서의 Escape Sequence | ** C#에서의 Escape Sequence | ||
** 형변환 | ** 형변환 | ||
** 예약어와 식별자 | ** 예약어와 식별자 | ||
** | ** <font color="#9933ff"><b>값 형식과 참조 형식</b></font> | ||
** | ** <font color="#9933ff"><b>배열, 다차원 배열, 가변 배열</b></font> | ||
** | ** <font color="#9933ff"><b>논리 연산자, 관계 연산자, 조건 연산자</b></font> | ||
** | ** <font color="#9933ff"><b>C#의 조건문과 반복문, 점프문</b></font> | ||
* #3. 클래스와 객체지향 Part.#1 | * #3. 클래스와 객체지향 Part.#1 <font color="#287a63"><b>(5월 25일에 완료)</b></font> | ||
** | ** <font color="#9933ff"><b>클래스와 인스턴스</b></font> | ||
** | ** <font color="#9933ff"><b>new 연산자</b></font> | ||
** | ** <font color="#9933ff"><b>데이터 멤버와 메서드 정의</b></font> | ||
** | ** <font color="#9933ff"><b>생성자와 소멸자, 기본 생성자</b></font> | ||
** GC와 소멸자 | ** GC와 소멸자 | ||
** | ** <font color="#9933ff"><b>정적 데이터 멤버와 정적 메서드</b></font> | ||
** | ** <font color="#9933ff"><b>정적 생성자(Static Constructor)</b></font> | ||
** 네임스페이스와 클래스, using을 통한 네임스페이스 선언 | ** 네임스페이스와 클래스, using을 통한 네임스페이스 선언 | ||
** C#에서의 FQDN | ** C#에서의 FQDN | ||
** | ** <font color="#9933ff"><b>C#에서의 접근 제한자</b></font> | ||
** | ** <font color="#9933ff"><b>접근자 메서드와 설정자 메서드, 그리고 속성(Property)</b></font> | ||
** 문맥 예약어 | ** 문맥 예약어 | ||
** 가변 객체와 불변 객체 | ** 가변 객체와 불변 객체 | ||
** | ** <font color="#9933ff"><b>클래스 내 데이터 멤버로써의 상수</b></font> | ||
** | ** <font color="#9933ff"><b>readonly 데이터 변수</b></font> | ||
** | ** <font color="#9933ff"><b>메서드 오버로딩</b></font> | ||
** | ** <font color="#9933ff"><b>연산자 오버로딩</b></font> | ||
** 중첩 클래스 | ** 중첩 클래스 | ||
** | |||
* #4. 클래스와 객체지향 Part.#2 <font color="#287a63"><b>(5월 25일 ~ 6월 1일에 걸쳐 완료)</b></font> | |||
** <font color="#9933ff"><b>C#에서의 클래스 상속</b></font> | |||
** 봉인된 클래스(Sealed class) | |||
** <font color="#9933ff"><b>클래스 상속 관계에서의 형변환</b></font> | |||
** <font color="#9933ff"><b>as 연산자와 is 연산자</b></font> | |||
** <font color="#9933ff"><b>enum 클래스 타입</b></font> | |||
** enum과 Flag 특성 | ** enum과 Flag 특성 | ||
** <font color="#9933ff"><b>this 예약어와 base 예약어</b></font> | |||
** <font color="#9933ff"><b>인덱서 구문</b></font> | |||
** <font color="#9933ff"><b>virtual 예약어와 가상 함수</b></font> | |||
** <font color="#9933ff"><b>메서드 오버라이딩과 new 예약어를 통한 메서드 정의</b></font> | |||
** <font color="#9933ff"><b>클래스 간의 형변환</b></font> | |||
** <font color="#9933ff"><b>추상 메서드와 추상 클래스</b></font> | |||
* #5. 클래스와 객체지향 Part.#3 <font color="#287a63"><b>(6월 1일에 완료)</b></font> | |||
** <font color="#9933ff"><b>델리게이트(delegate)의 정의</b></font> | |||
** <font color="#9933ff"><b>델리게이트의 특성, C#과 1급 함수</b></font> | |||
** System.MulticastDelegate | |||
** <font color="#9933ff"><b>델리게이트 인스턴스와 산술 연산자</b></font> | |||
** <font color="#9933ff"><b>콜백 메서드</b></font> | |||
** <font color="#9933ff"><b>인터페이스, 추상 클래스와 인터페이스</b></font> | |||
** <font color="#9933ff"><b>인터페이스의 구현</b></font> | |||
** <font color="#9933ff"><b>구조체(Struct), 구조체와 클래스</b></font> | |||
** <font color="#9933ff"><b>깊은 복사와 얕은 복사, PBV(CBV)와 PBR(CBR)</b></font> | |||
** <font color="#9933ff"><b>ref와 out 예약어를 통한 PBR</b></font> | |||
* # | * #5.5. 자투리 객체지향 ~~분량과 순서 조절로 인해 남은 것~~ <font color="#287a63"><b>(6월 21일에 완료)</b></font> | ||
** 강력한 결합과 느슨한 결합 | |||
** | |||
** System.Object와 System.ValueType | ** System.Object와 System.ValueType | ||
** 배열과 System.Array | ** 배열과 System.Array | ||
** | ** <font color="#9933ff"><b>열거자와 IEnumerator, IEnumerable</b></font> | ||
** | ** <font color="#9933ff"><b>이벤트</b></font> | ||
** | |||
* | |||
** | * #6. 마무리하는 C# 1.0 Part.1 <font color="#287a63"><b>(6월 21일에 완료)</b></font> | ||
** | ** <font color="#9933ff"><b>C#의 전처리기 지시문</b></font> | ||
** <font color="#9933ff"><b>변수의 유효범위</b></font> | |||
** <font color="#9933ff"><b>특성(Attribute) 클래스</b></font> | |||
** <font color="#9933ff"><b>특성(Attribute)과 속성(Property)</b></font> | |||
** <font color="#9933ff"><b>특성(Attribute)와 리플렉션(Reflection)</b></font> | |||
** <font color="#9933ff"><b>System.AttributeUsage</b></font> | |||
** <font color="#9933ff"><b>System.AttributeTargets, 특성에서의 대상 명시</b></font> | |||
** <font color="#9933ff"><b>어셈블리 정보 수정</b></font> | |||
** 시프트 연산자 | |||
** 연산자 간의 우선순위 | |||
** <font color="#9933ff"><b>오버플로(Overflow), 언더플로(Underflow)</b></font> | |||
** checked 예약어와 unchecked 예약어 | |||
** <font color="#9933ff"><b>가변 인자, params 예약어</b></font> | |||
** 플랫폼 호출(Platform Invocation) | |||
** extern 예약어와 비관리 코드 | |||
** unsafe 예약어와 포인터, 포인터 연산 | |||
** fixed 예약어와 참조 형식 인스턴스에 대한 포인터 연산 | |||
** stackalloc 예약어 | |||
* #7. 마무리하는 C# 1.0 Part.2 <font color="#287a63"><b>(6월 28일에 완료)</b></font> | |||
** <font color="#9933ff"><b>예외(Exception)</b></font> | |||
** System.Exception | |||
** <font color="#9933ff"><b>try/catch를 통한 예외 처리기</b></font> | |||
** <font color="#9933ff"><b>finally 블록</b></font> | |||
** <font color="#9933ff"><b>throw 예약어</b></font> | |||
** Swallowing Exception 피하기 | |||
** 스택과 Stack Overflow | |||
** 관리 힙과 GC | |||
** <font color="#9933ff"><b>박싱(Boxing)과 언박싱(Unboxing)</b></font> | |||
** 가비지 수집 | |||
** 루트 참조(Root reference) | |||
** 대용량 객체 힙(LOH, Large Object Heap) | |||
** <font color="#9933ff"><b>IDisposable 인터페이스와 using 블록</b></font> | |||
** 소멸자와 비관리 메모리 | |||
** 다시 보는 GC와 소멸자, 종료 큐 | |||
* #8. Visual Studio와 C# <font color="#287a63"><b>(6월 28일에 완료)</b></font> | |||
** 프로젝트 파일 설정(csproj) | |||
** 솔루션 파일 설정(sln) | |||
** csc에서의 다중 소스 컴파일, 라이브러리 생성과 참조 | |||
** Visual Studio에서의 라이브러리 생성 | |||
** <font color="#9933ff"><b>CLR과 app.config</b></font> | |||
** <font color="#9933ff"><b>supportedRuntime 태그</b></font> | |||
** <font color="#9933ff"><b>config 파일과 닷넷 응용 프로그램 실행 과정</b></font> | |||
** <font color="#9933ff"><b>appSettings 태그</b></font> | |||
** <font color="#9933ff"><b>System.ObsoleteAttribute</b></font> | |||
** <font color="#9933ff"><b>디버그 빌드와 릴리즈 빌드</b></font> | |||
** 각 빌드에서의 전처리 상수 정의, Conditional 특성 | |||
** System.Diagnotics.Debug, System.Diagnotics.Trace | |||
** 플랫폼 설정을 통한 응용 프로그램 빌드 | |||
** <font color="#9933ff"><b>어셈블리 이름과 DLL 지옥</b></font> | |||
** <font color="#9933ff"><b>PKI와 강력한 이름의 어셈블리(서명된 어셈블리)</b></font> | |||
** <font color="#9933ff"><b>전용 어셈블리와 XCopy 배포</b></font> | |||
** <font color="#9933ff"><b>GAC와 전역 어셈블리</b></font> | |||
* #9. BCL Part.1 <font color="#287a63"><b>(7월 5일에 완료)</b></font> | |||
** <font color="#9933ff"><b>닷넷 BCL 속의 컬렉션</b></font> | |||
** BCL을 통한 시간 처리 | |||
** BCL 속 유용한 문자열 메서드 | |||
** Encoding | |||
** Regex | |||
** <font color="#9933ff"><b>직렬화(Serailization)와 역직렬화(Deserialization)</b></font> | |||
** <font color="#9933ff"><b>Stream과 MemoryStream</b></font> | |||
** <font color="#9933ff"><b>StreamReader/StreamWriter와 BinaryReader/BinaryWriter</b></font> | |||
** BinaryFormatter를 이용한 직렬화 | |||
** XmlSerializer를 이용한 직렬화 | |||
** DataContractJsonSerializer를 이용한 직렬화 | |||
** BigInteger와 IntPtr, Tuple | |||
* #10. C# 2.0으로 올라서기 <font color="#287a63"><b>(7월 5일에 완료)</b></font> | |||
** <font color="#9933ff"><b>제네릭, 제네릭 메서드와 제네릭 클래스</b></font> | |||
** <font color="#9933ff"><b>제네릭과 박싱/언박싱</b></font> | |||
** <font color="#9933ff"><b>제네릭 형식 매개변수와 where 예약어</b></font> | |||
** BCL의 컬렉션 속 제네릭 | |||
** <font color="#9933ff"><b>?? 연산자</b></font> | |||
** <font color="#9933ff"><b>제네릭과 default 예약어</b></font> | |||
** <font color="#9933ff"><b>열거와 yield return/yield break</b></font> | |||
** <font color="#9933ff"><b>값 형식과 Nullable<T> 구조체</b></font> | |||
** <font color="#9933ff"><b>익명 메서드와 델리게이트</b></font> | |||
** <font color="#9933ff"><b>정적 클래스</b></font> | |||
** 부분 클래스 | |||
* #11. C# 3.0으로 올라서기 <font color="#287a63"><b>(7월 13일에 완료)</b></font> | |||
** <font color="#9933ff"><b>타입 추론(Type Inference), var 예약어</b></font> | |||
** <font color="#9933ff"><b>자동 구현 속성(Auto-Implemented Property)</b></font> | |||
** 객체 초기화, 컬렉션 초기화 | |||
** 익명 타입 | |||
** 부분 메서드 | |||
** <font color="#9933ff"><b>확장 메서드(Extension Method)</b></font> | |||
** <font color="#9933ff"><b>람다 식(Lambda Expression)</b></font> | |||
** 람다 지원 델리게이트, Action, Func, Predicate | |||
** <font color="#9933ff"><b>Enumerable 정적 클래스와 람다 식, 컬렉션</b></font> | |||
** 식 트리로 사용되는 람다 식 | |||
** <font color="#9933ff"><b>LINQ(Language-integrated Query)</b></font> | |||
** <font color="#9933ff"><b>LINQ와 from-in, where, group-by</b></font> | |||
** <font color="#9933ff"><b>지연 연산(Lazy Evaluation)</b></font> | |||
* #12. BCL Part.2 <font color="#287a63"><b>(7월 13일에 완료)</b></font> | |||
** <font color="#9933ff"><b>메타데이터와 리플렉션</b></font> | |||
** <font color="#9933ff"><b>AppDomain</b></font> | |||
** <font color="#9933ff"><b>리플렉션을 통한 어셈블리/모듈/타입/메서드 접근</b></font> | |||
** 리플렉션과 코드 결합 | |||
** 리플렉션과 플러그인(Plug-in) | |||
* # | * #13. C# 4.0으로 올라서기 <font color="#287a63"><b>(7월 13일에 완료)</b></font> | ||
** | ** <font color="#9933ff"><b>제네릭 타입 매개변수에 대한 Covariance/Contravariance</b></font> | ||
** | ** <font color="#9933ff"><b>선택적 매개변수(Optional Parameter)와 명명된 인자(Named Argument)</b></font> | ||
** | ** 닷넷 프레임워크 속 DLR | ||
** | ** <font color="#9933ff"><b>dynamic 예약어</b></font> | ||
** | ** <font color="#9933ff"><b>dynamic과 리플렉션</b></font> | ||
** | ** <font color="#9933ff"><b>덕 타이핑(Duck typing)</b></font> | ||
* | |||
** | * #14. C# 6.0으로 올라서기 <font color="#287a63"><b>(7월 13일에 완료)</b></font> | ||
** | ** <font color="#9933ff"><b>널 조건 연산자 (Null-conditional operator)</b></font> | ||
* | ** <font color="#9933ff"><b>문자열 내삽(String interpolation)</b></font> | ||
** | ** <font color="#9933ff"><b>인덱서 Dictionary 초기자</b></font> | ||
** | ** nameof 연산자 | ||
** | ** using static 키워드 | ||
** <font color="#9933ff"><b>Exception Filtering</b></font> | |||
** <font color="#9933ff"><b>자동 구현 속성 초기자</b></font> | |||
** <font color="#9933ff"><b>읽기 전용 자동 구현 속성</b></font> | |||
** <font color="#9933ff"><b>Expression-bodied member</b></font> | |||
* #15. BCL Part.3 <font color="#287a63"><b>(7월 17일에 완료)</b></font> | |||
** <font color="#9933ff"><b>FileStream, FileMode</b></font> | |||
** <font color="#9933ff"><b>File 클래스와 FileInfo 클래스</b></font> | |||
** <font color="#9933ff"><b>Directory 클래스와 DirectoryInfo 클래스</b></font> | |||
** <font color="#9933ff"><b>Path 타입</b></font> | |||
* #16. BCL Part.4 <font color="#287a63"><b>(7월 17일에 완료)</b></font> | |||
** <font color="#9933ff"><b>Thread</b></font> | |||
** <font color="#9933ff"><b>Thread 상태 제어</b></font> | |||
** <font color="#9933ff"><b>전경 스레드와 배경 스레드</b></font> | |||
** <font color="#9933ff"><b>Thread 동기화 처리 - Monitor를 통한 객체 잠금</b></font> | |||
** <font color="#9933ff"><b>Thread 동기화 처리 - lock 예약어를 통한 객체 잠금</b></font> | |||
** <font color="#9933ff"><b>원자적 연산과 Interlocked 타입</b></font> | |||
** <font color="#9933ff"><b>ThreadPool</b></font> | |||
** <font color="#9933ff"><b>Thread 동기화 처리 - EventWaitHandle을 통한 동기화</b></font> | |||
** <font color="#9933ff"><b>동기 호출과 비동기 호출</b></font> | |||
* #17. C# 5.0으로 올라서기 <font color="#287a63"><b>(7월 17일에 완료)</b></font> | |||
** 호출자 정보(Caller Information) | |||
** <font color="#9933ff"><b>async/await 예약어</b></font> | |||
** <font color="#9933ff"><b>Task 타입 (C# 4.0)</b></font> | |||
** Task와 ThreadPool의 QueueUserWorkItem (C# 4.0) | |||
** <font color="#9933ff"><b>await와 병렬 처리</b></font> | |||
** <font color="#9933ff"><b>catch 블록에서의 await (C# 6.0)</b></font> | |||
* <font color="#287a63"><b>종료!</b></font> | |||
== 덧글 == | == 덧글 == | ||
* 몇시쯤에 스터디가 진행되나요? - [[송준호]] | * 몇시쯤에 스터디가 진행되나요? - [[송준호]] | ||
| Line 120: | Line 288: | ||
* 엇! 단군력이 있는 CS 스터디군 - [[유재범]] | * 엇! 단군력이 있는 CS 스터디군 - [[유재범]] | ||
** System.Globalization! - [[신형철]] | ** System.Globalization! - [[신형철]] | ||
* 안녕하세요 청강생~~도강생~~입니다. - [[성훈]] | |||
** 정식적으로 등록을?! - [[신형철]] | |||
** 정식인원으로 진화!~~인연도 없는 시샵을...~~ - [[성훈]] | |||
** 정식으로! 인사! 드리겠! 습니다! - [[박인서]] | |||
* 닷넷신이다! 닷넷신이야! - [[김정민]] | |||
** !? - [[신형철]] | |||
Latest revision as of 23:56, 26 March 2026
개요
- CS(CSharp)에 대해 공부하는 스터디입니다. ~~Creep Score~~ ~~회사 이름~~ ~~Customer Satisfaction~~ ~~학교종합정보관리시스템~~ ~~Communication Satellite~~
- ~~사실 CSS(CSharp Study)로 하고 싶었어요..~~
참가자
준비물
- 스터디는 윈도우 환경에서 진행할 예정입니다.
- Visual Studio 2015가 필요합니다.
- 2013 버전에서도 가능은 합니다만, 추후에 다룰 기능에 대해서 패키지 형식으로 별도로 설치해야하는 번거로움이 존재할 수 있습니다.
- .NET Framework 4.6.1 버전이 필요합니다.
진행
- ~~별 일이 없는한 매주 화요일 저녁 or 수요일 저녁에 진행합니다.~~
- '되도록'이면 수요일 정모 끝난 직후에 진행하기로 결정했습니다.
- 참가 인원 중 한 명이 고정적인 시간을 잡을 수가 없어서 그런 것이니 양해해주세요 Orz...
- 상황이 여의치 않으면 스터디 시간은 상시로 바뀔 수 있습니다.
- ~~대략 1시간에서 2시간 정도 진행할 예정입니다.~~
- 진행하다보니 2시간 꽉 채워서 밖에 안되더군요...
목표
- C# 언어에 대한 기본 문법 이해와 적용
- C# 1.0에서 최신인 C# 6.0까지의 내용 숙지!
- BCL 라이브러리의 숙지
참고
- C# 6.0 프로그래밍
- 진행 내용 목차도 중간에 약간씩 조정된 것 빼고는 거의 대부분 이 책과 동일합니다.
- 프로그래밍 배우기
진행 내용
진행 예정 내용
- 다소 중요하다고 생각된 내용은 보라색 볼드(굵게) 처리하였습니다.
- ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~
- ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~
- #1. 닷넷 프레임워크 살펴보기 (5월 11일에 완료)
- 닷넷 응용 프로그램의 기본 구조
- CLR과 IL/MSIL(CIL)
- 닷넷 호환 언어
- CTS와 CLS
- 메타데이터, 닷넷 응용 프로그램 속의 메타데이터
- 어셈블리, 모듈
- CLI와 CTS, CLI와 닷넷 프레임워크
- 닷넷 프레임워크 구성 요소
- 기존 윈도우 프로그램과 닷넷 응용 프로그램의 대응 관계
- 모노(Mono) 프레임워크
- C#과 닷넷 프레임워크
- Naming Convention
- #2. C#의 타입과 문장(Statement), 배열 (5월 11일에 완료)
- 자료형과 기본 자료형
- C#에서의 정수 타입, 실수 타입, 문자 타입. 상수
- C#에서의 변수 초기화
- C#에서의 Escape Sequence
- 형변환
- 예약어와 식별자
- 값 형식과 참조 형식
- 배열, 다차원 배열, 가변 배열
- 논리 연산자, 관계 연산자, 조건 연산자
- C#의 조건문과 반복문, 점프문
- #3. 클래스와 객체지향 Part.#1 (5월 25일에 완료)
- 클래스와 인스턴스
- new 연산자
- 데이터 멤버와 메서드 정의
- 생성자와 소멸자, 기본 생성자
- GC와 소멸자
- 정적 데이터 멤버와 정적 메서드
- 정적 생성자(Static Constructor)
- 네임스페이스와 클래스, using을 통한 네임스페이스 선언
- C#에서의 FQDN
- C#에서의 접근 제한자
- 접근자 메서드와 설정자 메서드, 그리고 속성(Property)
- 문맥 예약어
- 가변 객체와 불변 객체
- 클래스 내 데이터 멤버로써의 상수
- readonly 데이터 변수
- 메서드 오버로딩
- 연산자 오버로딩
- 중첩 클래스
- #4. 클래스와 객체지향 Part.#2 (5월 25일 ~ 6월 1일에 걸쳐 완료)
- C#에서의 클래스 상속
- 봉인된 클래스(Sealed class)
- 클래스 상속 관계에서의 형변환
- as 연산자와 is 연산자
- enum 클래스 타입
- enum과 Flag 특성
- this 예약어와 base 예약어
- 인덱서 구문
- virtual 예약어와 가상 함수
- 메서드 오버라이딩과 new 예약어를 통한 메서드 정의
- 클래스 간의 형변환
- 추상 메서드와 추상 클래스
- #5. 클래스와 객체지향 Part.#3 (6월 1일에 완료)
- 델리게이트(delegate)의 정의
- 델리게이트의 특성, C#과 1급 함수
- System.MulticastDelegate
- 델리게이트 인스턴스와 산술 연산자
- 콜백 메서드
- 인터페이스, 추상 클래스와 인터페이스
- 인터페이스의 구현
- 구조체(Struct), 구조체와 클래스
- 깊은 복사와 얕은 복사, PBV(CBV)와 PBR(CBR)
- ref와 out 예약어를 통한 PBR
- #5.5. 자투리 객체지향 ~~분량과 순서 조절로 인해 남은 것~~ (6월 21일에 완료)
- 강력한 결합과 느슨한 결합
- System.Object와 System.ValueType
- 배열과 System.Array
- 열거자와 IEnumerator, IEnumerable
- 이벤트
- #6. 마무리하는 C# 1.0 Part.1 (6월 21일에 완료)
- C#의 전처리기 지시문
- 변수의 유효범위
- 특성(Attribute) 클래스
- 특성(Attribute)과 속성(Property)
- 특성(Attribute)와 리플렉션(Reflection)
- System.AttributeUsage
- System.AttributeTargets, 특성에서의 대상 명시
- 어셈블리 정보 수정
- 시프트 연산자
- 연산자 간의 우선순위
- 오버플로(Overflow), 언더플로(Underflow)
- checked 예약어와 unchecked 예약어
- 가변 인자, params 예약어
- 플랫폼 호출(Platform Invocation)
- extern 예약어와 비관리 코드
- unsafe 예약어와 포인터, 포인터 연산
- fixed 예약어와 참조 형식 인스턴스에 대한 포인터 연산
- stackalloc 예약어
- #7. 마무리하는 C# 1.0 Part.2 (6월 28일에 완료)
- 예외(Exception)
- System.Exception
- try/catch를 통한 예외 처리기
- finally 블록
- throw 예약어
- Swallowing Exception 피하기
- 스택과 Stack Overflow
- 관리 힙과 GC
- 박싱(Boxing)과 언박싱(Unboxing)
- 가비지 수집
- 루트 참조(Root reference)
- 대용량 객체 힙(LOH, Large Object Heap)
- IDisposable 인터페이스와 using 블록
- 소멸자와 비관리 메모리
- 다시 보는 GC와 소멸자, 종료 큐
- #8. Visual Studio와 C# (6월 28일에 완료)
- 프로젝트 파일 설정(csproj)
- 솔루션 파일 설정(sln)
- csc에서의 다중 소스 컴파일, 라이브러리 생성과 참조
- Visual Studio에서의 라이브러리 생성
- CLR과 app.config
- supportedRuntime 태그
- config 파일과 닷넷 응용 프로그램 실행 과정
- appSettings 태그
- System.ObsoleteAttribute
- 디버그 빌드와 릴리즈 빌드
- 각 빌드에서의 전처리 상수 정의, Conditional 특성
- System.Diagnotics.Debug, System.Diagnotics.Trace
- 플랫폼 설정을 통한 응용 프로그램 빌드
- 어셈블리 이름과 DLL 지옥
- PKI와 강력한 이름의 어셈블리(서명된 어셈블리)
- 전용 어셈블리와 XCopy 배포
- GAC와 전역 어셈블리
- #9. BCL Part.1 (7월 5일에 완료)
- 닷넷 BCL 속의 컬렉션
- BCL을 통한 시간 처리
- BCL 속 유용한 문자열 메서드
- Encoding
- Regex
- 직렬화(Serailization)와 역직렬화(Deserialization)
- Stream과 MemoryStream
- StreamReader/StreamWriter와 BinaryReader/BinaryWriter
- BinaryFormatter를 이용한 직렬화
- XmlSerializer를 이용한 직렬화
- DataContractJsonSerializer를 이용한 직렬화
- BigInteger와 IntPtr, Tuple
- #10. C# 2.0으로 올라서기 (7월 5일에 완료)
- 제네릭, 제네릭 메서드와 제네릭 클래스
- 제네릭과 박싱/언박싱
- 제네릭 형식 매개변수와 where 예약어
- BCL의 컬렉션 속 제네릭
- ?? 연산자
- 제네릭과 default 예약어
- 열거와 yield return/yield break
- 값 형식과 Nullable<T> 구조체
- 익명 메서드와 델리게이트
- 정적 클래스
- 부분 클래스
- #11. C# 3.0으로 올라서기 (7월 13일에 완료)
- 타입 추론(Type Inference), var 예약어
- 자동 구현 속성(Auto-Implemented Property)
- 객체 초기화, 컬렉션 초기화
- 익명 타입
- 부분 메서드
- 확장 메서드(Extension Method)
- 람다 식(Lambda Expression)
- 람다 지원 델리게이트, Action, Func, Predicate
- Enumerable 정적 클래스와 람다 식, 컬렉션
- 식 트리로 사용되는 람다 식
- LINQ(Language-integrated Query)
- LINQ와 from-in, where, group-by
- 지연 연산(Lazy Evaluation)
- #12. BCL Part.2 (7월 13일에 완료)
- 메타데이터와 리플렉션
- AppDomain
- 리플렉션을 통한 어셈블리/모듈/타입/메서드 접근
- 리플렉션과 코드 결합
- 리플렉션과 플러그인(Plug-in)
- #13. C# 4.0으로 올라서기 (7월 13일에 완료)
- 제네릭 타입 매개변수에 대한 Covariance/Contravariance
- 선택적 매개변수(Optional Parameter)와 명명된 인자(Named Argument)
- 닷넷 프레임워크 속 DLR
- dynamic 예약어
- dynamic과 리플렉션
- 덕 타이핑(Duck typing)
- #14. C# 6.0으로 올라서기 (7월 13일에 완료)
- 널 조건 연산자 (Null-conditional operator)
- 문자열 내삽(String interpolation)
- 인덱서 Dictionary 초기자
- nameof 연산자
- using static 키워드
- Exception Filtering
- 자동 구현 속성 초기자
- 읽기 전용 자동 구현 속성
- Expression-bodied member
- #15. BCL Part.3 (7월 17일에 완료)
- FileStream, FileMode
- File 클래스와 FileInfo 클래스
- Directory 클래스와 DirectoryInfo 클래스
- Path 타입
- #16. BCL Part.4 (7월 17일에 완료)
- Thread
- Thread 상태 제어
- 전경 스레드와 배경 스레드
- Thread 동기화 처리 - Monitor를 통한 객체 잠금
- Thread 동기화 처리 - lock 예약어를 통한 객체 잠금
- 원자적 연산과 Interlocked 타입
- ThreadPool
- Thread 동기화 처리 - EventWaitHandle을 통한 동기화
- 동기 호출과 비동기 호출
- #17. C# 5.0으로 올라서기 (7월 17일에 완료)
- 호출자 정보(Caller Information)
- async/await 예약어
- Task 타입 (C# 4.0)
- Task와 ThreadPool의 QueueUserWorkItem (C# 4.0)
- await와 병렬 처리
- catch 블록에서의 await (C# 6.0)
- 종료!