순차열 합성
요소들의 계산은 최대로 지연되다가, MoveNext() 호출해서 비로소 계산된다.
Nullable구조체
컴파일러는 T를 가벼운 불변이 구조체인 System.Nullable<T>로 바꾸어 컴파일한다. 이 구조체에는 두가지 필드가 존재한다. Value와 HashValue라는 두 필드만 있다.
아시다시피 C#에서 정수,구조체 등은 Value타입들은 null을 가질 수 없다. 하지만 이런 값타입도 값이 할당되지 않은 상태를 표현하고자 하려할때 Nullable구조체를 사용한다.
컴파일러는 위쪽 코드를 아래와 같이 바꾸어서 컴파일한다.
HashValue가 거짓인 널 가능 객체의 value를 조회하려 하면 InvalidOperationException이 발생한다. GetValueOrDefault()메서드 HashValue가 참이 면 value를 돌려주고 그렇지 않으면 new T()또는 지정된 커스텀 기본값을 돌려준다.
(T?의 기본값은 NULL)
'프로그래밍언어 > C#' 카테고리의 다른 글
C#) 동적바인딩 / 정적바인딩 (0) | 2020.04.08 |
---|---|
C#) 암묵적/명시적 널 가능 변환 / 널 가능 값의 박싱과 언박싱 (0) | 2020.04.06 |
C#) 반복자 (0) | 2020.03.31 |
C#) 열거자와 반복자 / IEnumerator, IEnumerator<T>,GetEnumerator (0) | 2020.03.30 |
2020317[C#] Using문 / Dispose (0) | 2020.03.17 |