[[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일] * [CS/7월17일] == 진행 예정 내용 == * 다소 중요하다고 생각된 내용은 [[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.3 * [[HTML(FileStream, FileMode)]] * [[HTML(File 클래스와 FileInfo 클래스)]] * [[HTML(Directory 클래스와 DirectoryInfo 클래스)]] * [[HTML(Path 타입)]] * #16. BCL Part.4 * [[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! - [신형철] * 안녕하세요 청강생~~도강생~~입니다. - [성훈] * 정식적으로 등록을?! - [신형철] * 정식인원으로 진화!~~인연도 없는 시샵을...~~ - [성훈] * 정식으로! 인사! 드리겠! 습니다! - [박인서] * 닷넷신이다! 닷넷신이야! - [김정민] * !? - [신형철]