Page 39 -
P. 39
사실 이처럼 코드를 작성하는 경우가 흔하지는 않다. 그리고 외부 타입의 매개변수와 중첩 타입의
매개변수를 모두 지정해야 한다는 사실을 정확히 인지하고 있다면, 그리 어렵지 않게 사용할 수
있을 것이다.
지금까지 C# 2에 추가된 기능 중 단일 기능으로는 가장 큰 부분이라고 할 수 있는 제네릭에 대해
서 모두 알아봤다. 다음으로 알아볼 내용은 제네릭을 기반으로 하는 null 가능 값 타입이다.
2.2 null 가능 값 타입 C# IN DEPTH
null 참조(null reference)는 1965년 토니 호아레(Tony Hoare)에 의해 알골(Algol) 언어에 최초로 도
입되었는데, 그는 이를 두고 ‘수십억 달러짜리 실수’라고 자책했다고 한다. 실제로 수많은 개발자
가 자신이 개발한 코드가 NullRefereceException(.NET), NullPointerException(자바) 혹은 이
와 유사한 예외를 일으킬 때마다 크나큰 좌절감을 맛보곤 한다. 너무 흔한 문제이다 보니 스택 오
버플로 등을 살펴보면 이와 관련된 수많은 질문을 찾아볼 수 있다. null을 허용한다는 것이 이처
럼 나쁜 것이라면 C# 2와 .NET 2.0에는 왜 null 가능 값 타입을 추가한 것일까? 우선 null 가능
값 타입을 이용해서 해결하려 했던 문제가 무엇인지 알아보자. 그리고 null 가능 값 타입을 도입
하기 이전에는 동일한 문제를 어떻게 해결했는지도 함께 알아보자.
2.2.1 목적: 정보가 없음을 나타내는 방법
어떤 정보를 나타낼 때 하나의 변수만 사용해도 된다면 상당히 편리할 것이다. 만약 나타내려는
정보가 항상 존재한다고 보장할 수 없다면 어떻게 해야 할까? 다음과 같은 상황을 고려해 보자.
● 주문 정보를 모델링할 때, 주문자가 속한 회사의 세부 내용을 포함하도록 했다고 가정해 보
자. 하지만 몇몇 경우에는 주문자가 회사를 대표하여 주문한 것이 아닐 수도 있을 것이다.
● 사람을 모델링할 때, 생일과 사망일을 포함하도록 했다고 가정해 보자. 아직 살아 있는 사람
일 경우는 어떻게 할까?
● 최소 가격과 최대 가격을 지정하여 제품을 추리는 필터를 모델링하고 있다고 가정해 보자.
고객이 최대 가격을 지정하지 않을 수도 있지 않을까?
080