Kilka punktów:
Po pierwsze, proponowana funkcja (niejawne „this” w wywołaniu metody rozszerzenia) jest niepotrzebna . Metody rozszerzające były niezbędne, aby funkcje składane zapytań LINQ działały tak, jak chcieliśmy; odbiorca jest zawsze określony w zapytaniu, więc nie jest konieczne obsługiwanie tego niejawnego, aby LINQ działał.
Po drugie, ta funkcja działa przeciwko bardziej ogólnemu projektowi metod rozszerzających: a mianowicie, że metody rozszerzające pozwalają rozszerzyć typ, którego nie możesz rozszerzyć samodzielnie , ponieważ jest to interfejs i nie znasz implementacji, lub dlatego, że tak znasz implementację, ale nie masz kodu źródłowego.
Jeśli jesteś w sytuacji, w której używasz metodę rozszerzenia dla typu w tego typu potem nie mieć dostępu do kodu źródłowego. Dlaczego więc w pierwszej kolejności używasz metody rozszerzenia? Możesz napisać metodę instancji jeśli masz dostęp do kodu źródłowego typu rozszerzonego, a następnie nie musisz w ogóle używać metody rozszerzającej! Twoja implementacja może wtedy skorzystać z dostępu do prywatnego stanu obiektu, czego nie mogą uzyskać metody rozszerzające.
Ułatwienie korzystania z metod rozszerzających z poziomu typu, do którego masz dostęp, zachęca do używania metod rozszerzających zamiast metod instancji. Metody rozszerzające są świetne, ale zwykle lepiej jest użyć metody instancji, jeśli taką masz.
Biorąc pod uwagę te dwa punkty, projektant języka nie musi już dłużej wyjaśniać, dlaczego ta funkcja nie istnieje. Teraz musisz wyjaśnić, dlaczego tak się dzieje . Funkcje wiążą się z ogromnymi kosztami. Ta funkcja nie jest konieczna i działa przeciwko określonym celom projektowym metod rozszerzających; dlaczego mielibyśmy ponosić koszty jego wdrożenia? Wyjaśnij, jaki fascynujący, ważny scenariusz umożliwia ta funkcja, a rozważymy jej wdrożenie w przyszłości. Nie widzę żadnego przekonującego, ważnego scenariusza, który to uzasadnia, ale być może jest taki, który przegapiłem.