저는 방어적으로 코드를 짜다 보니 널 체크(null check) 앵간해서 꼭하는데......
널체크를 했는 널(null)이 발생합니다?
사실 이건 훼이크입니다.
'Newtonsoft.Json'같은 외부 라이브러리를 사용할 때
해당 라이브러리 안에서 매개변수를 'null'로 만들어버리는 경우가 있습니다.
순간적으로 보면 이게 무슨 상황인지 이해할 수가 없죠 ㅎㅎㅎㅎ
특히나 문자열의 경우 값 타입처럼 보이지만 실제론 참조 타입이라 더 햇갈릴 수 있습니다.
함수 안에서 매개변수를 수정하는 경우 은근히 보는 현상입니다.
그래서 전달받은 값을 직접 컨트롤하는걸 자제하는 것이 좋습니다.
특히 문자열일 때 조심해야 하고 필요하다면 매개변수를 복사하여 사용하는 것이 좋습니다.
숫자와 같은 값 타입은 이런 현상이 없습니다.
문자열은 메모리를 복사하면서 동작하므로 구현에 따라 매개변수가 'null'되지 않을 수 있습니다.
정말 특수한 상황이라 보기 쉬운 현상은 아닙니다.
자주 쓰는 라이브러리인 'Newtonsoft.Json'을 사용할 때 잘못된 문자열이 들어가면 자주 보이는 오류라 좀 보이는 오류라는 착각이 있지
일반적인 코딩 스타일에서는 보기 힘든 오류라고 할 수 있겠습니다.