Пара очок:
По-перше, пропонована функція (неявне "this." При виклику методу розширення) непотрібна . Методи розширення були необхідні для того, щоб розуміння запитів LINQ працювало так, як ми хотіли; одержувач завжди вказується у запиті, тому не потрібно підтримувати це неявно, щоб змусити LINQ працювати.
По-друге, функція працює проти більш загальної конструкції методів розширення: а саме, що методи розширення дозволяють вам розширити тип, який ви не можете розширити самостійно , або тому, що це інтерфейс, і ви не знаєте реалізації, або тому, що ви знаєте знаєте реалізацію, але не маєте вихідного коду.
Якщо ви перебуваєте в сценарії , де ви використовуєте метод розширення для типу всередині цього типу , то ви дійсно маєте доступ до вихідного коду. Чому тоді ви спочатку використовуєте метод розширення? Ви можете написати метод екземпляра самостійно, якщо у вас є доступ до вихідного коду розширеного типу, і тоді вам зовсім не доведеться використовувати метод розширення! Тоді ваша реалізація може скористатися перевагами доступу до приватного стану об’єкта, а методи розширення не можуть.
Спрощення використання методів розширення всередині типу, до якого ви маєте доступ, заохочує використання методів розширення над методами екземпляра. Методи розширення чудові, але, як правило, краще використовувати метод екземпляра, якщо він у вас є.
Враховуючи ці два моменти, тягар більше не лягає на розробника мови, щоб пояснити, чому ця функція не існує. Зараз вам належить пояснити, чому це потрібно . Функції пов’язані з величезними витратами. Ця функція не є необхідною і працює проти заявлених цілей проектування методів розширення; чому ми повинні брати на себе витрати на його впровадження? Поясніть, який привабливий, важливий сценарій увімкнено цією функцією, і ми розглянемо можливість її впровадження в майбутньому. Я не бачу жодного вагомого, важливого сценарію, який би це виправдовував, але, можливо, є такий, який я пропустив.