public MoveResult MoveContents(TopicId from, TopicId to) { if (from is null) { throw new ArgumentNullException(nameof(from)); } if (to is null) { throw new ArgumentNullException(nameof(to)); } // 실제 코드 return MoveResult.Success; }
Note ≣
is null 구문이 낯설게 보일 수 있다. 나는 최근 마이크로소프트의 선임급 엔지니어들이 트위터에서 벌인 토론을 읽은 후 x == null보다 is null을 사용하기 시작했다. is 연산자는 오버로드될 수 없으므로 항상 정확한 결과를 반환하는 것이 보장된다. 마찬가지로 x != null 대신 x is object 구문을 비슷하게 사용할 수 있다. 내 코드 안에서는 non-nullable 검사를 사용하면 널 검사를 수행할 필요가 없지만, 라이브러리를 게시할 경우라면 외부 다른 사람의 코드에서 널을 사용해 코드를 호출할 수 있다. 이 경우에 널 검사를 명시적으로 수행해야 할 수도 있다.