Да, вы должны проверить свои аргументы перед их использованием, IMO.
NullReferenceException
должно произойти, когда используется непредвиденное нулевое значение.Он никогда не должен выдаваться явно, и указывает на проблему на уровне метода, который заканчивает тем, что выбрасывает его, или как-то он вызывается.
ArgumentNullException
указывает на ошибку в методе ранее в стеке вызовов, чем метод, бросающий его.(Обычно, но не всегда, прямой вызывающий.)
Чем раньше вы выдадите исключение, указывающее на проблему, тем легче будет точно определить, где нулевое значение впервые закралось в и .менее вероятно, что «плохие данные» будут иметь неприятный эффект в другом месте (например, перезаписать файл, готовый для записи данных в него, прежде чем понять, что на самом деле данные нулевые).
Если вы уверены вкак бы вы ни вызывали ваши внутренние или частные методы, может быть целесообразно не выполнять проверку там , но для открытых методов я считаю, что проверка аргументов почти всегда уместна.