Erstellen eines Alias ​​für einen Funktionsnamen in C #

10

Ich möchte einen Alias ​​für einen Funktionsnamen in C # erstellen.

Gibt es eine Möglichkeit, die Funktion zu überladen?

%Vor%

Ich möchte B anrufen, um A gleich unten zu ersetzen.

%Vor%     
Ghooti Farangi 22.05.2011, 14:32
quelle

6 Antworten

10

Sie können eine Erweiterungsmethode

verwenden %Vor%

Aber es ist kein Alias. Es ist ein Wrapper.

BEARBEITEN
ps: Ich stimme den Kommentatoren zu Ihrer Frage zu, dass wir bessere Antworten geben könnten, wenn wir wüssten, was Sie wirklich tun wollten, wenn wir das Problem verstehen, das Sie lösen wollen.

Ich sehe nicht wirklich den Sinn, die obige Erweiterungsmethode zu erstellen.

    
Cheeso 22.05.2011, 14:36
quelle
15

Ich bin überrascht, dass niemand Delegierte erwähnt hat. Es ist wahrscheinlich so nah an einem Methodenalias, wie Sie in C # kommen werden:

%Vor%

Wenn die Methode A ein Argument int und einen string zurückgibt, würde der Code wie folgt aussehen:

%Vor%     
Christian Davén 26.11.2013 13:37
quelle
4

Tatsächlich sind Funktionaliasnamen in C # -Terminologie mehr von Delegaten (wie Funktionszeiger in C ++). Hier ist eins:

%Vor%

Aber Sie müssen dies als B.Invoke () bezeichnen, da es parameterlos ist. Wenn es einen oder mehrere Parameter hätte, wäre das kein Problem.

    
Teoman Soygul 22.05.2011 14:38
quelle
1

C # ist objektorientierte Sprache, Sie können also keinen "Alias ​​für Funktion" erstellen. Sie können nur mit Klassen manipulieren. Wie bereits erwähnt, können Sie die Klasse mit der Erweiterungsmethode erweitern, Sie können auch eine abgeleitete Klasse erstellen und eine neue Methode darin erstellen, die die abgeleitete Methode aufrufen würde:

%Vor%

Aber wenn Sie B() auf Ihrer initialen Klasse Test aufrufen wollen, haben Sie nur eine Möglichkeit - Erstellen der Erweiterungsmethode.

    
Anton Semenov 22.05.2011 15:01
quelle
1

Das funktioniert.

%Vor%     
Brian 14.01.2017 01:28
quelle
1

Das ist so alt, aber ich habe eine Antwort darauf, warum eine Person einen Methodennamen aliasieren möchte. Es passiert ständig. Weil ein Entwickler einer Methode einen Namen gegeben hat, der keinen Sinn ergibt oder den Zweck der Methode nicht genau beschreibt. Die Methode wird viele Male in einer alten, gut gewürzten Lösung aufgerufen. Anstatt also ein großes Refactoring und Retest durchzuführen, das aufgrund einer schlecht benannten Methode nicht zu rechtfertigen ist, geben Sie ihm einfach einen sinnvollen Aliasnamen. Auf diese Weise wird neuer Code in Zukunft richtig gelesen.

d. Ein Grid-Steuerelement wird gespeichert, und es gibt einen Methodennamen IsReferenceSelectedSendEmail. Der Name impliziert, dass die Methode identifiziert, ob die vom Benutzer ausgewählte Referenz im Grid SendEmail ist. Was die Methode wirklich tut, ist über alle Referenzen iterieren und identifiziert, wenn einer von ihnen SendEmail ist.

Einfache Lösung. Alias ​​die Methode als AnyReferenceIsSendEmail, damit der zukünftige Code richtig gelesen wird: if (AnyReferenceIsSendEmail ()) ...

Nun, wenn wir nur ein Schlüsselwort bekommen können, "es sei denn", um eine if-Bedingung zu negieren.

IMO

    
donvnielsen 07.11.2017 13:26
quelle

Tags und Links