현재 속성을 통해 내부 목록을 노출하는 클래스에서 작업하고 있습니다. 목록은 수정 될 수 있으며 수정할 수 있습니다. 문제는 내부 목록의 항목을 클래스 외부에서 null로 설정할 수 있다는 것입니다.누구의 결함이 NullReferenceException입니까?
내 코드는 실제로 다음과 같습니다
class ClassWithList
{
List<object> _list = new List<object>();
// get accessor, which however returns the reference to the list,
// therefore the list can be modified (this is intended)
public List<object> Data
{
get
{
return _list;
}
}
private void doSomeWorkWithTheList()
{
foreach(object obj in _list)
// do some work with the objects in the list without checking for null.
}
}
을 그래서 지금 doSomeWorkWithTheList (에서) 난 항상 현재 목록 항목이 널인지 확인할 수 있습니다 또는 나는이 클래스를 사용하는 사람이하지 않는 것을 asume 단지 수 항목을 null로 설정하는 것이 좋습니다.
그래서 결국 질문이 끝납니다. 누구의 잘못은 NullReferenceException입니까? 클래스 개발자가 null에 대한 모든 것을 검사하지 않는다는 것 (이 코드는 일반적으로이 클래스 에서뿐만 아니라 더 복잡한 것입니다) 또는이 클래스 사용자의 잘못으로 List 항목을 null로 설정하면 ' 정말 말이 되니? 일반적으로 특별한 경우를 제외하고는 null 값을 확인하지 않는 경향이 있습니다. 이것이 잘못된 스타일인가, 아니면 사실상의 표준/표준인가?
아마 이것에 대한 궁극적 인 대답은 없다는 것을 알았습니다. 그런 경험에 대한 충분한 경험이 없으므로 다른 개발자가 그런 사례에 대해 어떻게 생각하는지 궁금해하고 실제로 null을 확인하는 것에 대해 듣고 싶습니다.
답장을 보내 주셔서 감사합니다. 나는 동의한다, 나는 널 위해 점검해야하지만, 그렇지 않다면 널 값을 설정할 수있는 가능성을 제공하지 않는다.마침내 구현하기 쉽기 때문에 Mant101의 답글을 선택했습니다. (힌트 : observablecollection을 시도해보십시오 - 더 많은 작업없이 더 많은 가능성을 제공합니다). 다른 응답도 훌륭했지만 단지 하나만 선택할 수있었습니다 ;-) 나는 더 많은 시간 (MatthewMartin에게 감사드립니다)이있을 때 코드 계약을 살펴볼 것입니다. –