2017-09-13 38 views
1

안녕을 취급 경우 ArgumentNullException 나는 작업라는 이름의 클래스, 내가로서의 객체 배열을 생성 형태에ToList() -

, 다음

Activity[] _actList; 

그리고 이렇게을 가지고

List<Activity> termsList = _actList.ToList<Activity>(); 

_actiList은 null이므로 ArgumentNullException을 던집니다.

내 질문은

이 예외는 어떻게 처리합니까?
동일한 기능을 사용하기위한 해결 방법이 있습니까?

제발 도와주세요!

var termsList = _actList?.ToList(); 

것은 또한 잡을 수 :

+1

초기화하지 않습니까? 빈 목록이 필요하십니까? –

+0

@NevilleNazerane 예'_actList'를 초기화하지 않고 – Sunitha

+0

을 초기화하지 않아도 컴퓨터가'termsList'에 넣기를 기대하고 있습니까? – bansi

답변

3

당신은 당신이 C# 6.0 이상을 사용하면 짧은 방법으로 동일하게 쓸 수있는 경우 ToList

var termsList = _actList == null ? null : _actList.ToList(); 

를 호출하기 전에 널 (null)를 확인하기 위해 필요 예외는 있지만이 경우 어레이의 일반적인 시나리오 인 경우 특히 권장하지 않습니다. null

+0

안녕하세요, 고마워. – Sunitha

+0

@Sunitha 도와 주셔서 감사합니다 :). FYI ToList에 대한 유형 매개 변수를 지정할 필요가 없습니다. 그러나 컴파일러가 알아낼 수 있으므로 거기에 넣을 좋은 이유가없는 한 컴파일러에서 알 수 있습니다. –

+0

오케이. 다시 한번 감사드립니다 :) – Sunitha

0

배열에서 배열이 null 인 경우 빈 기본 배열을 할당하지 않습니다.

Activity[] _actList = new Activity[] { }; 

폼이 초기화 될 때 배열도 빈 배열로 초기화됩니다. 이제 .ToList()를 수행하면 예외 대신 빈 목록이 표시됩니다. 이러한 문제에 대한 작동합니다

+0

abstract class 인스턴스? – bansi

+0

@bansi 그것은'Activity' 클래스의 인스턴스가 아닙니다. 이것은 배열의 인스턴스입니다. –

0

사용하여 시도 캐치 :

try { 
    List<Activity> termsList = _actList.ToList<Activity>(); 
} 
catch(ArgumentNullException){ 

} 

아니면 그것은을 사용하여 null의 경우 기본 값을 설정할 수 있습니다를 ?? 연산자 :

List<Activity> termsList = (_actList ?? new Employee[] { }).ToList<Activity>(); 

배열이 비어 있으면 빈 목록이 표시됩니다.