Почему я не могу указать значение параметра по умолчанию для параметра расширения this
?Значение по умолчанию для параметра «this» в C# Методы расширения
public static User CheckLogin(this User user = null)
{
...
}
Ошибка 108 Не удается задать значение по умолчанию для «этого» параметра
Но, когда я пишу как следующий, компиляция завершается успешно.
public static User CheckLogin([DefaultValue(null)]this User user)
{
...
}
Может ли кто-нибудь объяснить причину, по которой MS ограничивает первый параметр назначения параметров по умолчанию, позволяя второй?
Я бы сказал метод расширения должен быть связан с экземпляром объекта, и поэтому значение по умолчанию 'this', похоже, не имеет никакого смысла. Зачем вам нужен дефолт 'this'? – Bazzz
@Bazzz Я просто задавался вопросом, почему VS не обнаружил ошибок компиляции. Я знаю, что его нельзя вызвать с нулевым значением. –
@SenJacob На самом деле вы можете вызвать метод расширения, будет иметь нулевой элемент, потому что компилятор изменит его на вызов статического метода. 'Пользователь u = null; u.CheckLogin(); '. Я стараюсь не проверять «this» в моих методах расширения, чтобы избежать использования ключей. –