2009-08-24 28 views
5

Mój nauczyciel poprosił nas o zbadanie, czym jest klasa Extension, ale nie mogę znaleźć niczego w MSDN lub Google. Jakaś pomoc?Co to jest rozszerzenie klasy?

+0

Masz na myśli metody rozszerzające? Nie sądzę, że klasy Extension istnieją w języku C#, chyba że odwołujesz się do klas pochodnych? – James

+1

Czy jesteś pewien, że była to "klasa rozszerzenia", a nie "metoda rozszerzenia"? –

Odpowiedz

17

Nie ma czegoś takiego jak "rozszerzenie klasy" w oficjalnej terminologii C#. Może to oznaczać klasę definiującą extension methods (co nie jest niczym specjalnym, jest to po prostu prosta klasa static).

+0

Miałem też wątpliwości co do tego pytania. Cóż, dobrze wiedzieć. Dziękuję Ci! :) –

2

Klasa, która ma extension methods.

metody rozszerzeń pozwalają na „dodaj” metod do istniejących typów bez tworząc nowy typ pochodzący, rekompilacji lub w inny sposób modyfikujące typ oryginału. Metody rozszerzeń to specjalny rodzaj metody statycznej, , ale są one wywoływane tak, jakby były metodami instancji w rozszerzonym typie. Dla kodu klienta napisanego w języku C# i Visual Basic nie ma widocznej różnicy między wywołaniem metody rozszerzania a metodami, które są faktycznie zdefiniowane w typie.

2

technicznie "class rozszerzenie" nie ma nic. W języku ojczystym może go używać ktoś, kto odwołuje się do klasy, która jest przeznaczona do przechowywania extension methods. Metody rozszerzeń to metody używane do wyświetlania metod instancji klasy, ale które są naprawdę statycznymi metodami w klasie statycznej, które są dostarczane w celu wzmocnienia i enkapsulacji niektórych funkcji. Są one szczególnie przydatne, gdy próbujesz rozszerzyć określoną funkcjonalność na typ, którego nie można bezpośrednio zmodyfikować i dodać do niej metody. Ponadto są często używane z typami ogólnymi (szczególnie w ramach .net 3.5) w celu rozszerzenia funkcjonalności za pomocą metod dostarczonych przez konkretny interfejs.

0

klasę przedłużeniem w C# może być po prostu klasa dziecko (dziedziczenie i dodając więcej funkcji do typu bazowego lub interfejs) lub klasy statycznej.