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

CS/6월21일: Difference between revisions

From ZeroWiki
imported>nerumin90
({CREATE})
 
(Repair batch-0001 pages from live compare)
 
(2 intermediate revisions by 2 users not shown)
Line 5: Line 5:


== 참가자 ==
== 참가자 ==
* 진행 예정
* [[신형철]], [[이승현]], [[박인서]], [[강민승]], [[성훈]]


== 진행 시간 ==
== 진행 시간 ==
* 진행 예정
* 화요일 오후 6시 - 오후 7시 50분


== 진행 예정 내용 ==
== 진행 예정 내용 ==
* 다소 중요하다고 생각된 내용은 [[HTML(<font color="#9933ff"><b>보라색 볼드(굵게)</b></font>)]] 처리하였습니다.
* 다소 중요하다고 생각된 내용은 <font color="#9933ff"><b>보라색 볼드(굵게)</b></font> 처리하였습니다.


* #5.5. 자투리 객체지향 ~~분량과 순서 조절로 인해 남은 것~~
* #5.5. 자투리 객체지향 ~~분량과 순서 조절로 인해 남은 것~~
Line 17: Line 17:
** System.Object와 System.ValueType
** System.Object와 System.ValueType
** 배열과 System.Array
** 배열과 System.Array
** &#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>열거자와 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. 마무리하는 C# 1.0 Part.1
* #6. 마무리하는 C# 1.0 Part.1
** &#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 40: Line 40:
** fixed 예약어와 참조 형식 인스턴스에 대한 포인터 연산
** fixed 예약어와 참조 형식 인스턴스에 대한 포인터 연산
** stackalloc 예약어
** stackalloc 예약어
* #7. 마무리하는 C# 1.0 Part.2
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;예외(Exception)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** System.Exception
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;try/catch를 통한 예외 처리기&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;finally 블록&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;throw 예약어&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** Swallowing Exception 피하기
** 스택과 Stack Overflow
** 관리 힙과 GC
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;박싱(Boxing)과 언박싱(Unboxing)&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** 가비지 수집
** 루트 참조(Root reference)
** 대용량 객체 힙(LOH, Large Object Heap)
** &#91;&#91;HTML(&lt;font color="#9933ff"&gt;&lt;b&gt;IDisposable 인터페이스와 using 블록&lt;/b&gt;&lt;/font&gt;)&#93;&#93;
** 소멸자와 비관리 메모리
** 다시 보는 GC와 소멸자, 종료 큐
* 적당히 선택해서 진행할 예정입니다.


== 진행 ==
== 진행 ==
=== 내용 요약 ===
=== 내용 요약 ===
==== 5.5. 자투리 객체지향 ====
==== 5.5. 자투리 객체지향 ====
* 강력한 결합 - 클래스 간 직접 참조 관계로 결합되어 있는 경우.
* 느슨한 결합 - 클래스 간 인터페이스를 통해 결합되어 있는 경우.
* Object 클래스는 모든 닷넷 클래스(구조체 포함)의 부모 클래스이다.
** ToString, GetHashCode, GetType, Equals 메서드를 제공한다.
* Object가 참조 형식임에도 불구하고 값 형식의 부모라는 모순을 해결하기 위해 ValueType 클래스가 존재한다.
* 어떤 데이터를 열거할 필요가 있을 때 열거자 인터페이스를 구현한다.
* 어떤 변수가 IEnumerable 인터페이스를 구현하면 foreach 문의 혜택을 볼 수 있다.
==== 6. 마무리하는 C# 1.0 Part.1 ====
==== 6. 마무리하는 C# 1.0 Part.1 ====
==== 7. 마무리하는 C# 1.0 Part.2 ====
* C#에서도 #if - #elif - #else - #end, #region - #endregion, #define/#undef 등의 전처리기 지시자를 지원한다.
* 어떤 클래스/메서드/필드 등에 특징을 지어주고 싶을 때 특성 클래스를 사용한다.
* 특성 클래스의 사용 범위와 목표는 AttibuteTargets/AttributeUsage 특성을 적용시키면 조정할 수 있다.
* VS에서 제공하는 AssemblyInfo.cs의 각 특성 값을 조절하면 어셈블리의 정보를 변경할 수 있다.
* <<, >> 등의 시프트 연산자가 지원된다.
* 명시적으로 오버플로/언더플로를 검사하려면 checked 블록을 사용한다.
* 코드 전체에 checked가 씌워져 있는데, 명시적으로 검사하지 않으려면 unchecked 블록을 사용한다.
* 메서드에서 가변 인자를 사용하고 싶을 때 params 예약어를 이용한다. params는 매개변수 맨 끝에 와야한다.
* extern 예약어를 통해 메서드 본문을 제공하지 않아도 외부 메서드를 불러와 호출할 수 있도록 할 수 있다.
* unsafe 예약어를 통해 C#에서 포인터 연산을 사용할 수 있다. 단, 값 형식이나 값 형식 배열에 대해서만 적용 가능하다.
 
* fixed 예약어 블록을 통해 참조 형식에 대한 포인터 연산이 가능하지만, 마찬가지로 제한 사항은 같다.
* stackalloc 예약어를 통해 배열을 스택에 할당할 수 있다.
 
=== 그 외 ===
=== 그 외 ===
== 덧글 ==
== 덧글 ==
--------------------------------
--------------------------------
[[CS]]
[[CS]]

Latest revision as of 23:56, 26 March 2026

개요

  • 학기가 끝나고 돌아오는 스터디 (...?)

참가자

진행 시간

  • 화요일 오후 6시 - 오후 7시 50분

진행 예정 내용

  • 다소 중요하다고 생각된 내용은 보라색 볼드(굵게) 처리하였습니다.
  • #5.5. 자투리 객체지향 ~~분량과 순서 조절로 인해 남은 것~~
    • 강력한 결합과 느슨한 결합
    • System.Object와 System.ValueType
    • 배열과 System.Array
    • 열거자와 IEnumerator, IEnumerable
    • 이벤트


  • #6. 마무리하는 C# 1.0 Part.1
    • C#의 전처리기 지시문
    • 변수의 유효범위
    • 특성(Attribute) 클래스
    • 특성(Attribute)과 속성(Property)
    • 특성(Attribute)와 리플렉션(Reflection)
    • System.AttributeUsage
    • System.AttributeTargets, 특성에서의 대상 명시
    • 어셈블리 정보 수정
    • 시프트 연산자
    • 연산자 간의 우선순위
    • 오버플로(Overflow), 언더플로(Underflow)
    • checked 예약어와 unchecked 예약어
    • 가변 인자, params 예약어
    • 플랫폼 호출(Platform Invocation)
    • extern 예약어와 비관리 코드
    • unsafe 예약어와 포인터, 포인터 연산
    • fixed 예약어와 참조 형식 인스턴스에 대한 포인터 연산
    • stackalloc 예약어

진행

내용 요약

5.5. 자투리 객체지향

  • 강력한 결합 - 클래스 간 직접 참조 관계로 결합되어 있는 경우.
  • 느슨한 결합 - 클래스 간 인터페이스를 통해 결합되어 있는 경우.
  • Object 클래스는 모든 닷넷 클래스(구조체 포함)의 부모 클래스이다.
    • ToString, GetHashCode, GetType, Equals 메서드를 제공한다.
  • Object가 참조 형식임에도 불구하고 값 형식의 부모라는 모순을 해결하기 위해 ValueType 클래스가 존재한다.
  • 어떤 데이터를 열거할 필요가 있을 때 열거자 인터페이스를 구현한다.
  • 어떤 변수가 IEnumerable 인터페이스를 구현하면 foreach 문의 혜택을 볼 수 있다.

6. 마무리하는 C# 1.0 Part.1

  • C#에서도 #if - #elif - #else - #end, #region - #endregion, #define/#undef 등의 전처리기 지시자를 지원한다.
  • 어떤 클래스/메서드/필드 등에 특징을 지어주고 싶을 때 특성 클래스를 사용한다.
  • 특성 클래스의 사용 범위와 목표는 AttibuteTargets/AttributeUsage 특성을 적용시키면 조정할 수 있다.
  • VS에서 제공하는 AssemblyInfo.cs의 각 특성 값을 조절하면 어셈블리의 정보를 변경할 수 있다.
  • <<, >> 등의 시프트 연산자가 지원된다.
  • 명시적으로 오버플로/언더플로를 검사하려면 checked 블록을 사용한다.
  • 코드 전체에 checked가 씌워져 있는데, 명시적으로 검사하지 않으려면 unchecked 블록을 사용한다.
  • 메서드에서 가변 인자를 사용하고 싶을 때 params 예약어를 이용한다. params는 매개변수 맨 끝에 와야한다.
  • extern 예약어를 통해 메서드 본문을 제공하지 않아도 외부 메서드를 불러와 호출할 수 있도록 할 수 있다.
  • unsafe 예약어를 통해 C#에서 포인터 연산을 사용할 수 있다. 단, 값 형식이나 값 형식 배열에 대해서만 적용 가능하다.
  • fixed 예약어 블록을 통해 참조 형식에 대한 포인터 연산이 가능하지만, 마찬가지로 제한 사항은 같다.
  • stackalloc 예약어를 통해 배열을 스택에 할당할 수 있다.

그 외

덧글


CS