О методах расширения - PullRequest
0 голосов
/ 07 июня 2010

Должен ли я всегда бросать ArgumentNullException, когда метод расширения вызывается с нулем? (Методы расширения в Enumerable throw ArgumentNullException.) Я хотел бы получить разъяснения по этому вопросу. Если ответ «Да» и «Нет», укажите оба случая.

Ответы [ 2 ]

5 голосов
/ 07 июня 2010

Вам нужно выбросить его, если аргумент null, и вы не поддерживаете это условие.Если это не проблема, нет необходимости генерировать исключение.В большинстве случаев можно ожидать, что нулевой аргумент для аргумента this будет неподдерживаемым условием, но ни в коем случае это не означает, что всегда имеет место.Потребность в создании этого исключения (и для проверки на ноль) ничем не отличается в методах расширения от традиционных методов.

2 голосов
/ 08 июня 2010

Я видел такие методы, которые часто определяются как методы расширения:

public static bool IsNull(this object item)
{
    return item == null;
}

и используются как:

object o = null;
if (o.IsNull())
  return;

Так что в этом особом случае это не имеет смыслабросить, если аргумент нулевой.Методы расширения не отличаются от любых других методов, просто синтаксис более изящен.

...