Это аргумент, который является недействительным, так что вы должны бросить ArgumentNullException
. Вы должны в принципе никогда не бросать NullReferenceException
напрямую - его нужно только бросать (автоматически), когда вы пытаетесь разыменовать нулевое значение.
Тот факт, что вы пишете метод расширения, не меняет того факта, что на самом деле это статический метод, а параметр collection
- это параметр.
Как обычно, указать имя параметра, который является пустым, используя nameof
если вы используете C# 6:
public static T GetRandom<T>(this IEnumerable<T> collection)
{
if (collection == null)
{
throw new ArgumentNullException(nameof(collection));
}
...
}
(Как и в сторону, проверить MoreLINQ, которые вполне могут иметь большую часть вашего методы уже ...)
ПодробнееLINQ выглядит великолепно, спасибо) – Mitklantekutli