Worauf bezieht sich "this" in einer C # -Methodensignatur und gibt es ein VB.NET-Äquivalent?

8

Ich habe die ASP.NET MVC Storefront Video-Serie wieder und sah etwas, das ich noch nie zuvor bemerkt oder beachtet hatte. Mir ist aufgefallen, dass in den Signaturlisten verschiedener Methoden viele Referenzen auf this standen. Hier ist ein Beispiel für eins:

%Vor%

Ich verstehe sofort die IList<Category> list und die string categoryName in der Signatur, war aber verwirrt darüber, was this tut.

Also, als 95% VB-Typ, habe ich den Code in meinen Lieblingskonverter gepackt und habe:

%Vor%

Zunächst einmal bin ich mir nicht ganz sicher, warum <System.Runtime.CompilerServices.Extension> enthalten ist, vielleicht ist es nur der Konverter, trotzdem, wie Sie sehen können, wurde this nicht in etwas umgewandelt, was ich sagen kann, außer es muss mache mit dem oben erwähnten <System.Runtime.CompilerServices.Extension> .

Also sind die Fragen:

  1. Was bedeutet this in der C # -Methodensignatur? /
  2. Gibt es ein VB.NET-Äquivalent?


Antwort auf Frage 1:

Wir haben also definitiv klargestellt, dass this tatsächlich eine Erweiterungsmethode bezeichnet und dass aus den gegebenen Antworten ersichtlich ist, dass es kein Inline-VB-Äquivalent gibt.

Ich möchte hinzufügen, dass, da ich die ASP.NET MVC Storefront Video wurde das obige C # -Beispiel aus seiner CategoryFilters -Klasse gezogen. Ich nehme an, dass Sie so implementieren, was als Pipes und Filter oder -Pipeline -Methode bezeichnet wurde.


Antwort auf Frage 2:

Ich gehe davon aus, dass die Art und Weise, wie VB.NET mit Erweiterungsmethoden arbeitet, in etwa so aussieht:

%Vor%     
Code Maverick 19.04.2012, 15:26
quelle

3 Antworten

9

Das ist eine Erweiterungsmethode. Das this gibt an, dass es sich um eine Erweiterungsmethode von this <parameter> type handelt, in Ihrem Fall IList<Category> .

Es gibt hier ein VB.NET-Äquivalent , obwohl es ein Attribut ist, kein a Schlüsselwort.

Die Erweiterungsmethoden müssen den Typ kennen, auf den sie angewendet werden sollen. Beachten Sie, dass dies bei Generika offensichtlich ist. Eine Erweiterungsmethode:

%Vor%

Wird nur in List<Category> verfügbar sein.

    
Adam Houldsworth 19.04.2012, 15:27
quelle
6

Dies erstellt eine Erweiterungsmethode.

VB.Net hat hierfür keine entsprechende Syntax, Sie müssen das Attribut also selbst anwenden.

    
SLaks 19.04.2012 15:27
quelle
4

Dieses Erscheinen an diesem Ort bedeutet eine Erweiterungsmethode .

%Vor%

nach diesem Code jedes String-Objekt in Ihrem Programm kann diese Funktion verwenden, wie

%Vor%

Mit anderen Worten, dies ist eine Möglichkeit, die Funktionalität der Typen zu erweitern, auf die Sie keinen Zugriff haben oder von denen Sie nicht abweichen dürfen.

    
Tigran 19.04.2012 15:30
quelle

Tags und Links