2013-01-04 2 views
0

컬렉션 속성 ("IList"또는 Array 유형)의 컬렉션 속성이 요소가 없을 때 null이거나 빈 컬렉션으로 표시되어야하는지 (즉 길이가 제로)컬렉션 속성을 나타내는 모범 사례에 항목이 없음

public class Teacher 
{ 
    public List<Student> Students = null // to represent absence of items 
} 

또는이 주위에 가장 좋은 방법은 무엇

public class Teacher 
{ 
    public List<Student> Students = new List<Student>() // Initialize the collection. 
} 

.

답변

3

대부분의 경우이 목록은 빈 목록이어야합니다. 이렇게하면 목록을 사용하는 곳마다 널 확인을 수행 할 필요가 없으므로 논리가 단순 해집니다. 이 목록은 요소 "테스트"를 포함하는지 확인하려면

예를 들어, 다음과 같이 할 수 있습니다

if (myList.Contains("Test")) 

를 대신 필요없이이 또한

if(myList != null && myList.Contains("Test")) 

작성 확장 메서드에 대해 LINQ가 수행하는 작업 : null이 아닌 요소가 없으면 빈 IEnumerable을 반환합니다. 물론 이러한 메소드 호출을 체인화 할 수있는 것도 중요합니다.

물론 특정 항목을 나타 내기 위해 목록을 null로 만들고 싶지만 대부분의 경우 초기화를 통해 자신을 호의적으로 수행하는 경우가 있습니다. 그렇게하면 널 포인터 예외가 훨씬 적어 질 것입니다.)

0

이들은 서로 다른 의미를 가질 수 있으므로 올바른 코드가 무엇인지 결정하는 것은 여러분과 여러분의 요구 사항에 달려 있습니다.

학생이없는 교사 (Students = null)는 학생이없는 교사 (Students.Count == 0)와 동일합니다. 데이터베이스 용어로, 하나는 열에 대해 null 값과 같고 다른 하나는 0 값입니다. 이러한 경우는 해당하는 경우

그러나, 이럴보다, 당신이 재산에 .Count 또는 .Where 등의 작업을 할 때 포기하지 않기 때문에

public List<Student> Students = new List<Student>(); 

을하는 것이 좋습니다.

사실, 디버깅하는 것이 재미있는 public mutable collection 필드로 만들어야합니까?