Як зазначали інші, виклик методу розширення на нульовий довідник призводить до того, що цей аргумент є нульовим, і нічого іншого особливого не відбудеться. Це породжує ідею використовувати методи розширення для написання захисних пропозицій.
Ви можете прочитати цю статтю для прикладів: Як зменшити цикломатичну складність: Застереження Застереження Коротка версія:
public static class StringExtensions
{
public static void AssertNonEmpty(this string value, string paramName)
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("Value must be a non-empty string.", paramName);
}
}
Це метод розширення класу рядків, який можна викликати за нульовою посиланням:
((string)null).AssertNonEmpty("null");
Виклик працює нормально лише тому, що час виконання буде успішно викликати метод розширення за нульовою посиланням. Тоді ви можете використовувати цей метод розширення для реалізації застережних застережень без брудного синтаксису:
public IRegisteredUser RegisterUser(string userName, string referrerName)
{
userName.AssertNonEmpty("userName");
referrerName.AssertNonEmpty("referrerName");
...
}
Cannot perform runtime binding on a null reference
.