원본 : http://resisa.tistory.com/14 이전 프로그램에서 쿼리를 날린 후에 결과 값을 도메인 객체로 컨버트 해줄 때 결과집합이 DataSet이든 DataReader이든지 NULL값 때문에 삼항연산자를 사용하여 다음과 같은 작업을 했었다. (프로퍼티의 타입은 string이라고 가정하자.) 도메인.프로퍼티 = 결과집합["해당컬럼"] != null ? 결과집합["해당컬럼"].ToString() : ""; 일단 DBNull과 null은 과연 같은 값일까? 이름부터 다르기 때문에 다른 값으로 취급이 된다. 그러면 위의 결과집합["해당컬럼"]은 DBNull일까? null일까? DB에 쿼리를 날린 것이기 때문에 DBNull로 취급이 된다고 생각하자. 지금까지 저 구문이 이상하다고 느끼지 못했는데 어느순간에 의심이 들었다. DB에는 NULL이 들어가 있음에도 false일 때의 루틴이 아닌 true때의 루틴을 실행하는 것 같았다. 그리고 몇가지 테스트를 통하여 결과집합["해당컬럼"]은 null이 아닌 DBNull임을 알 수 있었다. 그럼 위의 구문을 다음과 같이 바꿔보자. 도메인.프로퍼티 = 결과집합["해당컬럼"] != DBNull.Value ? 결과집합["해당컬럼"].ToString() : ""; 이제 내가 원하는 루틴으로 프로그램이 실행되는 것을 알 수 있다. 그러다가 다른 프로그램에서 도메인으로 컨버트 하는 것을 보았다. 도메인.프로퍼티 = 결과집합["해당컬럼"].ToString(); 훨씬 더 심플하다. 애초에 결과집합["해당컬럼"]이 null일 꺼란 생각때문에 .ToString()이 예외를 던질꺼라고 생각하였다. (Null Exception) 하지만 예외는 발생하지 않았고 DBNull.Value.ToStr...