람다 식 내에서 예외를 방지, 그래서으로 구현 널 조건 연산자에 대한의 독립을 작성하는 방법은 다음과 운영자 대신 코드의 가독성을 향상시킬 수 있습니다. 이것은 클래스 초기화 코드에서 사용되는 수백 개의 삼중 연산자를 제거합니다. 나쁜 코드는 아니지만 읽기가 어렵습니다.내가 잠시 동안 비주얼 스튜디오 2013에 붙어
문제에는이 기능이 없습니다. 잘 작동한다. 문제는 그것의 사용과이다
FirstProperty
가 null 인 경우에
var myValue = myEntity.Property.IfNotNull(p => p.FirstProperty.SecondaryProperty);
이, 비주얼 스튜디오 내가 그것을 처리하고있다하더라도 NullReferenceException
를보고합니다. 이것은 매우 짜증나게 할 수 있습니다. 나는 보통 NullReferenceException
예외를 얻지 않지만,이 예외 경고를 끄고 싶지는 않습니다. 내가 NullReferenceException
을 잡는 이유는 (분명히 null 조건 연산자가 이것을하지 않는다) 복합 속성 경로의 경우에 IfNotNull
의 중첩을 피하기 위해서입니다.
operation
의 내용을 소비자가 원하는대로 (예 : 메소드, 필드, 심지어 논리 연산) 원하기 때문에 리플렉션을 사용하고 싶지 않습니다.
우리가 비주얼 스튜디오 2017
(그래, 난 널 조건 연산자 비주얼 스튜디오 2015은 최신이기 때문에 우리는 2017로 업그레이드에 사용할 수 있는지 알고로 업그레이드 할 때까지 난 정말 기다릴 수 없어 버전)
추가 : 디버깅 할 때 Visual Studio에서 예외를 팝업 창으로보고합니다. 디버깅 중이 지 않으면 런타임 또는 단위 테스트에서 발생하지 않습니다. catch 블록이 있는데 디버깅하는 동안 Visual Studio에서이 예외가 나타나서는 안됩니다. 그냥 붙잡아 야합니다.
아직도 더 : 좋아, 나는 사람들이 무엇을 요구하고 있는지 알고있다. 이것은 런타임 문제는 아닙니다. 그것은 디버그 문제입니다. Visual Studio는 NullReferenceException을 포착하는 try catch 블록 내에서 호출 된 람다 식에서 NullReferenceException을 throw하여보고합니다. Visual Studio에서 왜 경고해야합니까? 어떻게 멈추게 할 수 있습니까? 그것은 내가 할 수있는 것처럼 간결합니다.
를 사용하여 C# 6 (VS2015) :'VAR myValue = myEntity .Property .SecondaryProperty,' –
@TimSchmelter 영업 이익은 VS 즉, (여전히 사용 VS2013) – Nkosi
@Nkosi의 특정 버전을 사용할 수 없습니다 :? 내가 ' 그것을 보았다. 1) OP가 2015를 얻을 수 있다면 2017은 필요하지 않습니다. 2.) 2015 –