저는 VS2008 (http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx)의 코드 계약서를 가지고 놀았습니다.
그들은 확실히 좋고 방법 안의 if-then-throw 검사에 대한 견고한 대안을 제공합니다..NET 4.0의 코드 계약, nullableable 참조 유형 팬을위한 기쁨 없음?
그럼에도 불구하고 필자는 nullable이 아닌 참조 유형에 대해 강하게 느끼는 필요성을 충족시킬 수 있기를 희망했습니다.
아아, 내가 볼 수있는 것에서 볼 때 그렇진 않습니다.
뭔가가 여전히 실행시 문제가 발생합니다 :
난 아직 명시 적으로도 더 간결하고 효율적인 방법으로 경우, 수표를 작성해야
이 내가 이해 것입니다
MyClass a = null;
a.ToString();.
VS Team System을 사용하지 않는 한 런타임에서 체크하는 데 코드 계약 만 사용할 수 있으며 컴파일 타임에는 이점이 없습니다.
뭔가 잘못되었을 때 여전히 문제를 처리해야한다는 의미입니다.
간단한 예외 처리와 크게 다르지 않습니다.VSTS를 사용하더라도 정적 분석은 런타임시 수행되는 것만 큼 좋지 않습니다.
이것은 완벽하게 이해할 수 있지만,이 기능은 런타임 사용을위한 것입니다.
내가 틀렸다면하지만 코드 계약 내 인생을 더 쉽게 만들 수있는 방법은 없습니다 참조 및 비 - 널 (NULL) 참조 형식 같은 것, 내 프로그램보다 강력한 것과 저를 수정하십시오.
잘못 이해하지 마십시오. 코드 계약을 싫어하지 않습니다.
그들은 전체 프레임 워크에 대한 아주 좋은 향상입니다.
C#에서 null이 아닌 참조 형식을 사용하지 않아서 채워지는 간격을 채우지 않으면이 시점에서 아무 것도 볼 수 없게됩니다.
당신은 어떻게 생각하십니까?
음 ... Nullable * 참조 유형으로 재생하기위한 프로토 타입이 (2017) 있습니다. [내 대답은 아래 참조하십시오] (https://stackoverflow.com/a/47339130/6309) – VonC