의 멤버로 만들려면 API를 사용하여 일부 작업을 수행했습니다. 이것은 처음 사용했을 때의 예입니다.클라이언트를 새로운 클래스
var someStuff = new myObject();
someStuff.Name = "stackOverflow";
someStuff.Options.MaxSurname = 5; //this caused me to get a runtime exception, Options is Null
수정이 간단했습니다. 인스턴스를 만들려면 Options 멤버를 새로 만들어야했습니다.
someStuff.Options = new Options();
someStuff.Options.MaxSurname = 5;
이제 예상대로 작동합니다. 괜찮아? 클라이언트로서 나는이 옵션 멤버를 새로 만들어야한다는 것을 알지 못했습니다. 빠른 수정 일단 디버그에 가서 런타임 null 개체 예외가있어.
네가 말했듯이 네가 그렇게하는 것이 더 자연 스럽다. 나는 컴파일러가이 상황에서 더 현명하지 않다는 것을 안다. 그런 클래스를 디자인 할 수있는 대안적인 방법이 있다면 나는 생각하고 있었다. 즉 최초 사용시의 구성물 또는 이와 유사한 것. –
@ Science_Fiction : 물론 myObject 클래스는 초기화시 Options 객체를 생성 할 수 있습니다. 또는 생성자에서 options 매개 변수가 필요할 수 있습니다. 모든 것은 실제로 API의 사용을 얼마나 제한 하느냐에 달려 있습니다. (예를 들어, Options 객체가 필요합니다 ...) –
옵션 설정은 선택 사항입니다. 그래서 아무도 그것을 사용하지 않으므로 그것은 무의미한 것으로 간주 될 수 있기 때문에 그것이 생성자에서 초기화되지 않은 이유입니다. –