Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

CS

From ZeroWiki
Revision as of 13:09, 15 July 2016 by imported>nerumin90

개요

  • 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까지의 내용 숙지!
  • C#에서의 Threading, Network, DBMS와의 연동까지!

참고

  • C# 6.0 프로그래밍
    • 진행 내용 목차도 중간에 약간씩 조정된 것 빼고는 거의 대부분 이 책과 동일합니다.

진행 내용

진행 예정 내용

  • 다소 중요하다고 생각된 내용은 [[HTML(<font color="#9933ff"><b>보라색 볼드(굵게)</b></font>)]] 처리하였습니다.
    • ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~
    • ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~
  • #1. 닷넷 프레임워크 살펴보기 [[HTML(<font color="#287a63"><b>(5월 11일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>닷넷 응용 프로그램의 기본 구조</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>CLR과 IL/MSIL(CIL)</b></font>)]]
    • 닷넷 호환 언어
    • CTS와 CLS
    • 메타데이터, 닷넷 응용 프로그램 속의 메타데이터
    • [[HTML(<font color="#9933ff"><b>어셈블리, 모듈</b></font>)]]
    • CLI와 CTS, CLI와 닷넷 프레임워크
    • 닷넷 프레임워크 구성 요소
    • 기존 윈도우 프로그램과 닷넷 응용 프로그램의 대응 관계
    • 모노(Mono) 프레임워크
    • C#과 닷넷 프레임워크
    • Naming Convention
  • #2. C#의 타입과 문장(Statement), 배열 [[HTML(<font color="#287a63"><b>(5월 11일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>자료형과 기본 자료형</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>C#에서의 정수 타입, 실수 타입, 문자 타입. 상수</b></font>)]]
    • C#에서의 변수 초기화
    • C#에서의 Escape Sequence
    • 형변환
    • 예약어와 식별자
    • [[HTML(<font color="#9933ff"><b>값 형식과 참조 형식</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>배열, 다차원 배열, 가변 배열</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>논리 연산자, 관계 연산자, 조건 연산자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>C#의 조건문과 반복문, 점프문</b></font>)]]
  • #3. 클래스와 객체지향 Part.#1 [[HTML(<font color="#287a63"><b>(5월 25일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>클래스와 인스턴스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>new 연산자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>데이터 멤버와 메서드 정의</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>생성자와 소멸자, 기본 생성자</b></font>)]]
    • GC와 소멸자
    • [[HTML(<font color="#9933ff"><b>정적 데이터 멤버와 정적 메서드</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>정적 생성자(Static Constructor)</b></font>)]]
    • 네임스페이스와 클래스, using을 통한 네임스페이스 선언
    • C#에서의 FQDN
    • [[HTML(<font color="#9933ff"><b>C#에서의 접근 제한자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>접근자 메서드와 설정자 메서드, 그리고 속성(Property)</b></font>)]]
    • 문맥 예약어
    • 가변 객체와 불변 객체
    • [[HTML(<font color="#9933ff"><b>클래스 내 데이터 멤버로써의 상수</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>readonly 데이터 변수</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>메서드 오버로딩</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>연산자 오버로딩</b></font>)]]
    • 중첩 클래스
  • #4. 클래스와 객체지향 Part.#2 [[HTML(<font color="#287a63"><b>(5월 25일 ~ 6월 1일에 걸쳐 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>C#에서의 클래스 상속</b></font>)]]
    • 봉인된 클래스(Sealed class)
    • [[HTML(<font color="#9933ff"><b>클래스 상속 관계에서의 형변환</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>as 연산자와 is 연산자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>enum 클래스 타입</b></font>)]]
    • enum과 Flag 특성
    • [[HTML(<font color="#9933ff"><b>this 예약어와 base 예약어</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>인덱서 구문</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>virtual 예약어와 가상 함수</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>메서드 오버라이딩과 new 예약어를 통한 메서드 정의</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>클래스 간의 형변환</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>추상 메서드와 추상 클래스</b></font>)]]
  • #5. 클래스와 객체지향 Part.#3 [[HTML(<font color="#287a63"><b>(6월 1일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>델리게이트(delegate)의 정의</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>델리게이트의 특성, C#과 1급 함수</b></font>)]]
    • System.MulticastDelegate
    • [[HTML(<font color="#9933ff"><b>델리게이트 인스턴스와 산술 연산자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>콜백 메서드</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>인터페이스, 추상 클래스와 인터페이스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>인터페이스의 구현</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>구조체(Struct), 구조체와 클래스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>깊은 복사와 얕은 복사, PBV(CBV)와 PBR(CBR)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>ref와 out 예약어를 통한 PBR</b></font>)]]
  • #5.5. 자투리 객체지향 ~~분량과 순서 조절로 인해 남은 것~~ [[HTML(<font color="#287a63"><b>(6월 21일에 완료)</b></font>)]]
    • 강력한 결합과 느슨한 결합
    • System.Object와 System.ValueType
    • 배열과 System.Array
    • [[HTML(<font color="#9933ff"><b>열거자와 IEnumerator, IEnumerable</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>이벤트</b></font>)]]


  • #6. 마무리하는 C# 1.0 Part.1 [[HTML(<font color="#287a63"><b>(6월 21일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>C#의 전처리기 지시문</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>변수의 유효범위</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>특성(Attribute) 클래스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>특성(Attribute)과 속성(Property)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>특성(Attribute)와 리플렉션(Reflection)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>System.AttributeUsage</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>System.AttributeTargets, 특성에서의 대상 명시</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>어셈블리 정보 수정</b></font>)]]
    • 시프트 연산자
    • 연산자 간의 우선순위
    • [[HTML(<font color="#9933ff"><b>오버플로(Overflow), 언더플로(Underflow)</b></font>)]]
    • checked 예약어와 unchecked 예약어
    • [[HTML(<font color="#9933ff"><b>가변 인자, params 예약어</b></font>)]]
    • 플랫폼 호출(Platform Invocation)
    • extern 예약어와 비관리 코드
    • unsafe 예약어와 포인터, 포인터 연산
    • fixed 예약어와 참조 형식 인스턴스에 대한 포인터 연산
    • stackalloc 예약어
  • #7. 마무리하는 C# 1.0 Part.2 [[HTML(<font color="#287a63"><b>(6월 28일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>예외(Exception)</b></font>)]]
    • System.Exception
    • [[HTML(<font color="#9933ff"><b>try/catch를 통한 예외 처리기</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>finally 블록</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>throw 예약어</b></font>)]]
    • Swallowing Exception 피하기
    • 스택과 Stack Overflow
    • 관리 힙과 GC
    • [[HTML(<font color="#9933ff"><b>박싱(Boxing)과 언박싱(Unboxing)</b></font>)]]
    • 가비지 수집
    • 루트 참조(Root reference)
    • 대용량 객체 힙(LOH, Large Object Heap)
    • [[HTML(<font color="#9933ff"><b>IDisposable 인터페이스와 using 블록</b></font>)]]
    • 소멸자와 비관리 메모리
    • 다시 보는 GC와 소멸자, 종료 큐
  • #8. Visual Studio와 C# [[HTML(<font color="#287a63"><b>(6월 28일에 완료)</b></font>)]]
    • 프로젝트 파일 설정(csproj)
    • 솔루션 파일 설정(sln)
    • csc에서의 다중 소스 컴파일, 라이브러리 생성과 참조
    • Visual Studio에서의 라이브러리 생성
    • [[HTML(<font color="#9933ff"><b>CLR과 app.config</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>supportedRuntime 태그</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>config 파일과 닷넷 응용 프로그램 실행 과정</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>appSettings 태그</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>System.ObsoleteAttribute</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>디버그 빌드와 릴리즈 빌드</b></font>)]]
    • 각 빌드에서의 전처리 상수 정의, Conditional 특성
    • System.Diagnotics.Debug, System.Diagnotics.Trace
    • 플랫폼 설정을 통한 응용 프로그램 빌드
    • [[HTML(<font color="#9933ff"><b>어셈블리 이름과 DLL 지옥</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>PKI와 강력한 이름의 어셈블리(서명된 어셈블리)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>전용 어셈블리와 XCopy 배포</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>GAC와 전역 어셈블리</b></font>)]]
  • #9. BCL Part.1 [[HTML(<font color="#287a63"><b>(7월 5일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>닷넷 BCL 속의 컬렉션</b></font>)]]
    • BCL을 통한 시간 처리
    • BCL 속 유용한 문자열 메서드
    • Encoding
    • Regex
    • [[HTML(<font color="#9933ff"><b>직렬화(Serailization)와 역직렬화(Deserialization)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Stream과 MemoryStream</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>StreamReader/StreamWriter와 BinaryReader/BinaryWriter</b></font>)]]
    • BinaryFormatter를 이용한 직렬화
    • XmlSerializer를 이용한 직렬화
    • DataContractJsonSerializer를 이용한 직렬화
    • BigInteger와 IntPtr, Tuple
  • #10. C# 2.0으로 올라서기 [[HTML(<font color="#287a63"><b>(7월 5일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>제네릭, 제네릭 메서드와 제네릭 클래스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>제네릭과 박싱/언박싱</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>제네릭 형식 매개변수와 where 예약어</b></font>)]]
    • BCL의 컬렉션 속 제네릭
    • [[HTML(<font color="#9933ff"><b>?? 연산자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>제네릭과 default 예약어</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>열거와 yield return/yield break</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>값 형식과 Nullable<T> 구조체</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>익명 메서드와 델리게이트</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>정적 클래스</b></font>)]]
    • 부분 클래스
  • #11. C# 3.0으로 올라서기 [[HTML(<font color="#287a63"><b>(7월 13일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>타입 추론(Type Inference), var 예약어</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>자동 구현 속성(Auto-Implemented Property)</b></font>)]]
    • 객체 초기화, 컬렉션 초기화
    • 익명 타입
    • 부분 메서드
    • [[HTML(<font color="#9933ff"><b>확장 메서드(Extension Method)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>람다 식(Lambda Expression)</b></font>)]]
    • 람다 지원 델리게이트, Action, Func, Predicate
    • [[HTML(<font color="#9933ff"><b>Enumerable 정적 클래스와 람다 식, 컬렉션</b></font>)]]
    • 식 트리로 사용되는 람다 식
    • [[HTML(<font color="#9933ff"><b>LINQ(Language-integrated Query)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>LINQ와 from-in, where, group-by</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>지연 연산(Lazy Evaluation)</b></font>)]]
  • #12. BCL Part.2 [[HTML(<font color="#287a63"><b>(7월 13일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>메타데이터와 리플렉션</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>AppDomain</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>리플렉션을 통한 어셈블리/모듈/타입/메서드 접근</b></font>)]]
    • 리플렉션과 코드 결합
    • 리플렉션과 플러그인(Plug-in)
  • #13. C# 4.0으로 올라서기 [[HTML(<font color="#287a63"><b>(7월 13일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>제네릭 타입 매개변수에 대한 Covariance/Contravariance</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>선택적 매개변수(Optional Parameter)와 명명된 인자(Named Argument)</b></font>)]]
    • 닷넷 프레임워크 속 DLR
    • [[HTML(<font color="#9933ff"><b>dynamic 예약어</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>dynamic과 리플렉션</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>덕 타이핑(Duck typing)</b></font>)]]
  • #14. C# 6.0으로 올라서기 [[HTML(<font color="#287a63"><b>(7월 13일에 완료)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>널 조건 연산자 (Null-conditional operator)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>문자열 내삽(String interpolation)</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>인덱서 Dictionary 초기자</b></font>)]]
    • nameof 연산자
    • using static 키워드
    • [[HTML(<font color="#9933ff"><b>Exception Filtering</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>자동 구현 속성 초기자</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>읽기 전용 자동 구현 속성</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Expression-bodied member</b></font>)]]
  • #15. BCL Part.4
    • [[HTML(<font color="#9933ff"><b>FileStream, FileMode</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>File 클래스와 FileInfo 클래스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Directory 클래스와 DirectoryInfo 클래스</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Path 타입</b></font>)]]
  • #16. BCL Part.3
    • [[HTML(<font color="#9933ff"><b>Thread</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Thread 상태 제어</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>전경 스레드와 배경 스레드</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Thread 동기화 처리 - Monitor를 통한 객체 잠금</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Thread 동기화 처리 - lock 예약어를 통한 객체 잠금</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>원자적 연산과 Interlocked 타입</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>ThreadPool</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Thread 동기화 처리 - EventWaitHandle을 통한 동기화</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>동기 호출과 비동기 호출</b></font>)]]
  • #17. C# 5.0으로 올라서기
    • 호출자 정보(Caller Information)
    • [[HTML(<font color="#9933ff"><b>async/await 예약어</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>Task 타입 (C# 4.0)</b></font>)]]
    • Task와 ThreadPool의 QueueUserWorkItem (C# 4.0)
    • [[HTML(<font color="#9933ff"><b>await와 병렬 처리</b></font>)]]
    • [[HTML(<font color="#9933ff"><b>catch 블록에서의 await (C# 6.0)</b></font>)]]

덧글

  • 몇시쯤에 스터디가 진행되나요? - 송준호
    • 확실하진 않지만 저녁 6시에서 7시 사이에 시작하지 않을까요? ~~사실 이것도 장담은 못합니다만~~ - 신형철
    • 수요일 6~7시면 그 시간은 정모 시간이에요. 화욜이면 6시 쯤 부터일 것 같고 수욜이면 7시 쯤 부터이지 않을까요 ~~사실 이것도 장담은 못합니다만~~ - 홍성현
  • 필요한 지식(ex. C언어 등)이 있어야 되나요? - 박인서
    • 아마 C언어는 기본적으로 필요할 듯 싶고, 객체 지향 언어(특히 Java)을 조금이라도 아신다면 괜찮을 것 같습니다. 객체 지향 개념같은 것들은 진행 도중 언급은 하겠지만, 그렇게 비중있게 다루지는 않을 것 같아요. - 신형철
  • 엇! 단군력이 있는 CS 스터디군 - 유재범
  • 안녕하세요 청강생~~도강생~~입니다. - 성훈
    • 정식적으로 등록을?! - 신형철
    • 정식인원으로 진화!~~인연도 없는 시샵을...~~ - 성훈
    • 정식으로! 인사! 드리겠! 습니다! - 박인서
  • 닷넷신이다! 닷넷신이야! - 김정민