Natknąłem się na kilka wystąpień kodu C #, takich jak:
public static int Foo(this MyClass arg)
W tym przypadku nie udało mi się znaleźć wyjaśnienia tego this
słowa kluczowego. Jakieś spostrzeżenia?
c#
parameters
this
kpozin
źródło
źródło
Odpowiedzi:
To jest metoda rozszerzenia . Zobacz tutaj wyjaśnienie .
oznacza to, że możesz zadzwonić
zamiast
Pozwala to na budowę płynnych interfejsów, jak podano poniżej.
źródło
Cytowany post na blogu Scott Gu ładnie to wyjaśnia.
Dla mnie odpowiedź na pytanie znajduje się w następującym stwierdzeniu w tym poście:
źródło
this
słowa kluczowego w podpisie metody. Inne odpowiedzi tylko nieprzydatnie mówią „to metoda rozszerzenia”. Nigdy w pełni nie rozumiałem, w jaki sposób metody rozszerzeń „przyczepiają się” do typów, które rozszerzają, aż do przeczytania tej odpowiedzi. Dziękuję Ci!Oprócz objaśnienia Preet Sangha:
Intellisense wyświetla metody rozszerzenia za pomocą niebieskiej strzałki (np. Przed „Aggregate <>”):
Potrzebujesz
aby pojawiły się i były dostępne metody rozszerzenia, jeśli są w innej przestrzeni nazw niż kod, który ich używa.
źródło
Są to metody rozszerzenia . Witamy w zupełnie nowym, płynnym świecie . :)
źródło
Właśnie tego nauczyłem się innego dnia: to słowo kluczowe określa, że metoda jest rozszerzeniem klasy, która ją kontynuuje. Na przykład, MyClass będzie miał nową metodę rozszerzenia o nazwie Foo (która nie akceptuje żadnego parametru i zwraca wartość int; może być używana jak w przypadku każdej innej metody publicznej).
źródło
„this” rozszerza następną klasę na liście parametrów
Tak więc w podpisie metody poniżej „ten” rozszerza „Ciąg”. Linia jest przekazywana do funkcji jako normalny argument metody. publiczny ciąg statyczny [] SplitCsvLine (ta linia ciąg)
W powyższym przykładzie klasa „ta” rozszerza wbudowaną klasę „String”.
źródło