4. 진행 예정 내용 ¶
- 다소 중요하다고 생각된 내용은 보라색 볼드(굵게) 처리하였습니다.
- #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.1.1. 5.5. 자투리 객체지향 ¶
- 강력한 결합 - 클래스 간 직접 참조 관계로 결합되어 있는 경우.
- 느슨한 결합 - 클래스 간 인터페이스를 통해 결합되어 있는 경우.
- Object 클래스는 모든 닷넷 클래스(구조체 포함)의 부모 클래스이다.
- ToString, GetHashCode, GetType, Equals 메서드를 제공한다.
- Object가 참조 형식임에도 불구하고 값 형식의 부모라는 모순을 해결하기 위해 ValueType 클래스가 존재한다.
- 어떤 데이터를 열거할 필요가 있을 때 열거자 인터페이스를 구현한다.
- 어떤 변수가 IEnumerable 인터페이스를 구현하면 foreach 문의 혜택을 볼 수 있다.
5.1.2. 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 예약어를 통해 배열을 스택에 할당할 수 있다.