프로그래밍언어/C#

C#) 순차열 합성 / Nullable<T>구조체

HJH0825 2020. 4. 1. 09:28

순차열 합성

요소들의 계산은 최대로 지연되다가, MoveNext() 호출해서 비로소 계산된다. 


Nullable구조체

컴파일러는 T를 가벼운 불변이 구조체인  System.Nullable<T>로 바꾸어 컴파일한다. 이 구조체에는 두가지 필드가 존재한다. Value와 HashValue라는 두 필드만 있다. 

아시다시피 C#에서 정수,구조체 등은 Value타입들은 null을 가질 수 없다. 하지만 이런 값타입도 값이 할당되지 않은 상태를 표현하고자 하려할때 Nullable구조체를 사용한다.

컴파일러는 위쪽 코드를 아래와 같이 바꾸어서 컴파일한다.

 

HashValue가 거짓인 널 가능 객체의 value를 조회하려 하면 InvalidOperationException이 발생한다. GetValueOrDefault()메서드 HashValue가 참이 면 value를 돌려주고 그렇지 않으면 new T()또는 지정된 커스텀 기본값을 돌려준다.

(T?의 기본값은 NULL)