Допустим, у меня есть метод расширения
public static T TakeRandom<T>(this IEnumerable<T> e)
{
...
Чтобы подтвердить аргумент e, я должен:
A) if (e == null) генерировать новое исключение NullReferenceException ()
B) если (e == null) генерирует новое ArgumentNullException ("e")
В) не проверять е
Какой консенсус?
Моя первая мысль - всегда проверять аргументы, поэтому выдается исключение ArgumentNullException. Опять же, поскольку TakeRandom () становится методом e, возможно, это должно быть исключение NullReferenceException. Но если это NullReferenceException, если я пытаюсь использовать член e внутри TakeRandom (), NullReferenceException все равно будет выброшено.
Может быть, мне лучше использовать Reflector и узнать, что делает фреймворк.