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