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

CS: Difference between revisions

From ZeroWiki
imported>nerumin90
No edit summary
(Repair batch-0001 pages from live compare)
 
(34 intermediate revisions by 10 users not shown)
Line 6: Line 6:


== 참가자 ==
== 참가자 ==
* [[신형철]], [[이승현]], [[홍성현]], [[박인서]], [[김상렬]], [[유성현]], [[강민승]]
* [[신형철]], [[이승현]], [[홍성현]], [[박인서]], [[김상렬]], [[유성현]], [[강민승]], [[성훈]]
 
== 준비물 ==
== 준비물 ==
* 스터디는 윈도우 환경에서 진행할 예정입니다.
* 스터디는 윈도우 환경에서 진행할 예정입니다.
Line 20: Line 19:
** 참가 인원 중 한 명이 고정적인 시간을 잡을 수가 없어서 그런 것이니 양해해주세요 Orz...
** 참가 인원 중 한 명이 고정적인 시간을 잡을 수가 없어서 그런 것이니 양해해주세요 Orz...
** 상황이 여의치 않으면 스터디 시간은 상시로 바뀔 수 있습니다.
** 상황이 여의치 않으면 스터디 시간은 상시로 바뀔 수 있습니다.
* 대략 1시간에서 2시간 정도 진행할 예정입니다.
* ~~대략 1시간에서 2시간 정도 진행할 예정입니다.~~
** 진행하다보니 2시간 꽉 채워서 밖에 안되더군요...


== 목표 ==
== 목표 ==
* C# 언어에 대한 기본 문법 이해와 적용
* C# 언어에 대한 기본 문법 이해와 적용
* C# 1.0에서 최신인 C# 6.0까지의 내용 숙지!
* C# 1.0에서 최신인 C# 6.0까지의 내용 숙지!
* C#에서의 Threading, Network, DBMS와의 연동까지!
* 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, 병렬 프로그래밍을 추가하여 진행했습니다.
== 진행 예정 내용 ==
== 진행 예정 내용 ==
* 다소 중요하다고 생각된 내용은 [[HTML(<font color="#9933ff"><b>보라색 볼드(굵게)</b></font>)]] 처리하였습니다.
* 다소 중요하다고 생각된 내용은 <font color="#9933ff"><b>보라색 볼드(굵게)</b></font> 처리하였습니다.
** ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~
** ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~
** ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~
** ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~


* #1. 닷넷 프레임워크 살펴보기 &#91;&#91;HTML(&lt;font color="#287a63"&gt;&lt;b&gt;(5월 11일에 완료)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
* #1. 닷넷 프레임워크 살펴보기 <font color="#287a63"><b>(5월 11일에 완료)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;닷넷 응용 프로그램의 기본 구조&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>닷넷 응용 프로그램의 기본 구조</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;CLR과 IL/MSIL(CIL)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>CLR과 IL/MSIL(CIL)</b></font>
** 닷넷 호환 언어
** 닷넷 호환 언어
** CTS와 CLS
** CTS와 CLS
** 메타데이터, 닷넷 응용 프로그램 속의 메타데이터
** 메타데이터, 닷넷 응용 프로그램 속의 메타데이터
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;어셈블리, 모듈&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>어셈블리, 모듈</b></font>
** CLI와 CTS, CLI와 닷넷 프레임워크
** CLI와 CTS, CLI와 닷넷 프레임워크
** 닷넷 프레임워크 구성 요소
** 닷넷 프레임워크 구성 요소
Line 49: Line 63:
** Naming Convention
** Naming Convention


* #2. C#의 타입과 문장(Statement), 배열 &#91;&#91;HTML(&lt;font color="#287a63"&gt;&lt;b&gt;(5월 11일에 완료)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
* #2. C#의 타입과 문장(Statement), 배열 <font color="#287a63"><b>(5월 11일에 완료)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;자료형과 기본 자료형&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>자료형과 기본 자료형</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;C#에서의 정수 타입, 실수 타입, 문자 타입. 상수&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>C#에서의 정수 타입, 실수 타입, 문자 타입. 상수</b></font>
** C#에서의 변수 초기화
** C#에서의 변수 초기화
** C#에서의 Escape Sequence
** C#에서의 Escape Sequence
** 형변환
** 형변환
** 예약어와 식별자
** 예약어와 식별자
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;값 형식과 참조 형식&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>값 형식과 참조 형식</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;배열, 다차원 배열, 가변 배열&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>배열, 다차원 배열, 가변 배열</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;논리 연산자, 관계 연산자, 조건 연산자&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>논리 연산자, 관계 연산자, 조건 연산자</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;C#의 조건문과 반복문, 점프문&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>C#의 조건문과 반복문, 점프문</b></font>


* #3. 클래스와 객체지향 Part.#1
* #3. 클래스와 객체지향 Part.#1 <font color="#287a63"><b>(5월 25일에 완료)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;클래스와 인스턴스&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>클래스와 인스턴스</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;new 연산자&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>new 연산자</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;데이터 멤버와 메서드 정의&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>데이터 멤버와 메서드 정의</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;생성자와 소멸자, 기본 생성자&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>생성자와 소멸자, 기본 생성자</b></font>
** GC와 소멸자
** GC와 소멸자
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;정적 데이터 멤버와 정적 메서드&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>정적 데이터 멤버와 정적 메서드</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;정적 생성자(Static Constructor)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>정적 생성자(Static Constructor)</b></font>
** 네임스페이스와 클래스, using을 통한 네임스페이스 선언
** 네임스페이스와 클래스, using을 통한 네임스페이스 선언
** C#에서의 FQDN
** C#에서의 FQDN
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;C#에서의 접근 제한자&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>C#에서의 접근 제한자</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;접근자 메서드와 설정자 메서드, 그리고 속성(Property)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>접근자 메서드와 설정자 메서드, 그리고 속성(Property)</b></font>
** 문맥 예약어
** 문맥 예약어
** 가변 객체와 불변 객체
** 가변 객체와 불변 객체
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;클래스 내 데이터 멤버로써의 상수&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>클래스 내 데이터 멤버로써의 상수</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;readonly 데이터 변수&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>readonly 데이터 변수</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;메서드 오버로딩&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>메서드 오버로딩</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;연산자 오버로딩&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>연산자 오버로딩</b></font>
** 중첩 클래스
** 중첩 클래스


* #4. 클래스와 객체지향 Part.#2
* #4. 클래스와 객체지향 Part.#2 <font color="#287a63"><b>(5월 25일 ~ 6월 1일에 걸쳐 완료)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;C#에서의 클래스 상속&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>C#에서의 클래스 상속</b></font>
** 봉인된 클래스(Sealed class)
** 봉인된 클래스(Sealed class)
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;클래스 상속 관계에서의 형변환&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>클래스 상속 관계에서의 형변환</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;as 연산자와 is 연산자&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>as 연산자와 is 연산자</b></font>
** System.Object와 System.ValueType
** <font color="#9933ff"><b>enum 클래스 타입</b></font>
** 배열과 System.Array
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;enum 클래스 타입&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** enum과 Flag 특성
** enum과 Flag 특성
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;this 예약어와 base 예약어&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>this 예약어와 base 예약어</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;인덱서 구문&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>인덱서 구문</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;virtual 예약어와 가상 함수&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>virtual 예약어와 가상 함수</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;메서드 오버라이딩과 new 예약어를 통한 메서드 정의&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>메서드 오버라이딩과 new 예약어를 통한 메서드 정의</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;클래스 간의 형변환&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>클래스 간의 형변환</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;추상 메서드와 추상 클래스&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>추상 메서드와 추상 클래스</b></font>


* #5. 클래스와 객체지향 Part.#3
* #5. 클래스와 객체지향 Part.#3 <font color="#287a63"><b>(6월 1일에 완료)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;델리게이트(delegate)의 정의&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>델리게이트(delegate)의 정의</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;델리게이트의 특성, C#과 1급 함수&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>델리게이트의 특성, C#과 1급 함수</b></font>
** System.MulticastDelegate
** System.MulticastDelegate
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;델리게이트 인스턴스와 산술 연산자&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>델리게이트 인스턴스와 산술 연산자</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;콜백 메서드&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>콜백 메서드</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;인터페이스, 추상 클래스와 인터페이스&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>인터페이스, 추상 클래스와 인터페이스</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;인터페이스의 구현&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>인터페이스의 구현</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;열거자와 IEnumerator, IEnumerable&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <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>
** 강력한 결합과 느슨한 결합
** 강력한 결합과 느슨한 결합
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;구조체(Struct), 구조체와 클래스&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** System.Object와 System.ValueType
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;깊은 복사와 얕은 복사, PBV(CBV)와 PBR(CBR)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** 배열과 System.Array
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;ref와 out 예약어를 통한 PBR&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>열거자와 IEnumerator, IEnumerable</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;이벤트&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>이벤트</b></font>


* #6. Visual Studio와 C#
** 프로젝트 파일 설정(csproj)
** 솔루션 파일 설정(sln)
** csc에서의 다중 소스 컴파일, 라이브러리 생성과 참조
** Visual Studio에서의 라이브러리 생성
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;CLR과 app.config&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;supportedRuntime 태그&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;config 파일과 닷넷 응용 프로그램 실행 과정&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;appSettings 태그&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;System.ObsoleteAttribute&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;디버그 빌드와 릴리즈 빌드&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** 각 빌드에서의 전처리 상수 정의, Conditional 특성
** System.Diagnotics.Debug, System.Diagnotics.Trace
** 플랫폼 설정을 통한 응용 프로그램 빌드
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;어셈블리 이름과 DLL 지옥&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;PKI와 강력한 이름의 어셈블리(서명된 어셈블리)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;전용 어셈블리와 XCopy 배포&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;GAC와 전역 어셈블리&lt;/b&gt;&lt;/font&gt;)&#93;&#93;


* #7. 마무리하는 C# 1.0 Part.1
* #6. 마무리하는 C# 1.0 Part.1 <font color="#287a63"><b>(6월 21일에 완료)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;C#의 전처리기 지시문&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>C#의 전처리기 지시문</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;변수의 유효범위&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>변수의 유효범위</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;특성(Attribute) 클래스&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>특성(Attribute) 클래스</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;특성(Attribute)과 속성(Property)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>특성(Attribute)과 속성(Property)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;특성(Attribute)와 리플렉션(Reflection)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>특성(Attribute)와 리플렉션(Reflection)</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;System.AttributeUsage&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>System.AttributeUsage</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;System.AttributeTargets, 특성에서의 대상 명시&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>System.AttributeTargets, 특성에서의 대상 명시</b></font>
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;어셈블리 정보 수정&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>어셈블리 정보 수정</b></font>
** 시프트 연산자
** 시프트 연산자
** 연산자 간의 우선순위
** 연산자 간의 우선순위
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;오버플로(Overflow), 언더플로(Underflow)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>오버플로(Overflow), 언더플로(Underflow)</b></font>
** checked 예약어와 unchecked 예약어
** checked 예약어와 unchecked 예약어
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;가변 인자, params 예약어&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** <font color="#9933ff"><b>가변 인자, params 예약어</b></font>
** 플랫폼 호출(Platform Invocation)
** 플랫폼 호출(Platform Invocation)
** extern 예약어와 비관리 코드
** extern 예약어와 비관리 코드
Line 151: Line 149:
** stackalloc 예약어
** 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 160: 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 라이브러리의 숙지

참고

진행 내용

진행 예정 내용

  • 다소 중요하다고 생각된 내용은 보라색 볼드(굵게) 처리하였습니다.
    • ~~중요한 게 중요하지 않은 것보다 많게 보이는 건 착각입니다.~~
    • ~~사실 딱히 강조처리 하는게 의미가 없을수도..~~
  • #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)
  • 종료!

덧글

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