2017-09-13 59 views
1

您好我有一個名爲Activity類,ToList() - ArgumentNullException處理

在創建它的對象數組作爲一種形式,

Activity[] _actList; 

然後做到這一點,

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

因爲_actiList爲空投擲ArgumentNullException

所以我的問題是,

我該如何處理這個異常?
還是有一個工作來獲得相同的功能?

請幫忙!

+1

你的意思是沒有初始化?你期待一個空的列表嗎? –

+0

@NevilleNazerane是的沒有初始化'_actList'沒有初始化 – Sunitha

+0

你期望機器放在'termsList'中? – bansi

回答

3

你需要調用ToList

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

如果您使用的是C#6.0或更高版本,你可以寫同樣在更短的方式之前,檢查空:

var termsList = _actList?.ToList(); 

您還可以趕上例外,但我不建議在這種情況下,特別是如果這是陣列的一種常見情況是null

+0

嘿,非常感謝,它工作。 – Sunitha

+0

@Sunitha很高興幫助:)。僅供參考,不需要爲'ToList'指定類型參數,但是編譯器可以計算出來,所以建議不要將其忽略掉,除非您有充分的理由將其放在那裏。 –

+0

哦,好吧。再次感謝:) – Sunitha

0

您可以確保在分配一個空的默認數組時,數組永遠不會爲null。

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

因此,當表單被初始化時,數組也會被初始化爲一個空數組。如果您現在正在執行.ToList(),那麼您將獲得一個空列表,而不是一個例外。

+0

抽象類的實例? – bansi

+0

@bansi它不是「Activity」類的一個實例。它是一個數組的實例。 –

0

使用嘗試捕捉這將任何這樣的問題開展工作:

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

} 

或者您可以使用設置默認值,如果它使用爲空?運算符:

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

如果數組爲空,這將爲您提供一個空列表。