−두 방식의 결과는 같다. ?.가 Map의 자리를, ??가 GetValueOrDefault의 자리를 맡는다. 차이는 타입에 있다. CityOrNull의 string?을 확인 없이 string처럼 쓰면 경고만 나고 컴파일은 되지만, Option<string>은 GetValueOrDefault나 Match 없이 문자열을 꺼낼 수 없다. 한편 사용자 2, 3, 4는 모두 None으로 출력되어 어느 단계에서 비었는지 알 수 없다. 이 구분이 필요하면 결과 타입으로 바꿔야 한다. 이 예제의 Option은 Some(null)도 막지 않으므로, 참조 형식을 감쌀 때는 만드는 쪽에서 null을 걸러야 한다.
+두 방식의 결과는 같으며, ?.가 Map의 자리를, ??가 GetValueOrDefault의 자리를 맡는다. CityOrNull의 string?을 확인 없이 string처럼 쓰면 경고만 나고 컴파일은 되지만, Option<string>에서는 GetValueOrDefault나 Match를 거쳐야 문자열을 꺼낼 수 있다는 타입의 차이가 있다. 한편 사용자 2, 3, 4는 모두 None으로 출력되어 어느 단계에서 비었는지 알 수 없으니, 이 구분이 필요하면 결과 타입으로 바꿔야 한다. 이 예제의 Option은 Some(null)도 허용하므로 참조 형식을 감싸는 쪽에서 null을 걸러야 한다.