Я думал, что методы / атрибуты этого были по сути в области по умолчанию.
Они есть.Но методы расширения не методы this
в области по умолчанию;они являются статическими методами, доступными через синтаксический сахар, предоставленный компилятором в качестве любезности.
Я полагаю, что вы уже знаете это, но просто для пояснения: если ExtensionMethod
- это метод расширения класса, область действия которого выв данный момент наберите:
this.ExtensionMethod();
... - это то же самое, что:
SomeStaticClass.ExtensionMethod(this);
this
необходимо передать как параметр to ExtensionMethod
.Первый способ, описанный выше, компилятор просто делает это за вас.
Естественно, они могли бы реализовать вещи иначе, так что компилятор "вводит" методы расширения, а также члены класса в область видимости по умолчанию;они просто решили не делать этого.Лично мне это нравится;но я думаю, это субъективный вопрос.В любом случае, если вам не нравится вводить this
, это всего лишь небольшое раздражение, верно?