Да, вы должны это проверить.Это также довольно распространенный шаблон в этом случае, особенно в LINQ:
public static void MyExtension<T>(this IEnumerable<T> source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
// ...
}
Обработка пустого списка намного проще, чем обработка экземпляра списка с нулевым значением.Думайте об этом таким образом;Список без предметов - просто пустая коллекция - довольно распространенный случай.Список, который является нулевым ... представляет что? Исключительная ситуация , и должна обрабатываться как таковая.
Обновление:
Я посмотрел вокруг, что скажет Microsoft о моих предположениях о том, что бросаниеANE - это общая схема (в отличие от того, чтобы позволить CLR генерировать NRE - что в точках может быть слишком расплывчатым), и это кажется правильным.Мы можем найти на странице документации ANE , что:
ArgumentNullException (...) предоставлен так, чтобы код приложения мог дифференцировать между исключениями, вызванными нулевыми аргументамии исключения, вызванные ненулевыми аргументами.
И позже, в разделе "Рекомендации по проектированию структуры" Исключение раздел:
Сбой при выполнении отчетабросая исключения.Если участник не может успешно выполнить то, для чего он предназначен, это следует рассматривать как сбой выполнения, и следует выдать исключение .
В вашем случае, поскольку вы упомянулиметод никогда не должен принимать нулевой аргумент списка, это просто ошибка выполнения ситуация.