Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Der Visual Basic-Compiler muss entscheiden, welche Überladung aufgerufen werden soll, wenn eine Prozedur in mehreren überladenen Versionen definiert ist. Es entscheidet, indem es die folgenden Schritte ausführt:
On
oder Off
ist.Die folgende Abbildung zeigt den Prozess, der bestimmt, welche von einer Reihe überladener Versionen aufgerufen werden soll.
Im folgenden Beispiel wird dieser Überlastungsauflösungsprozess veranschaulicht.
Overloads Sub z(ByVal x As Byte, ByVal y As Double)
End Sub
Overloads Sub z(ByVal x As Short, ByVal y As Single)
End Sub
Overloads Sub z(ByVal x As Integer, ByVal y As Single)
End Sub
Dim r, s As Short
Call z(r, s)
Dim p As Byte, q As Short
' The following statement causes an overload resolution error.
Call z(p, q)
Im ersten Aufruf entfernt der Compiler die erste Überladung, da sich der Typ des ersten Arguments (Short
) auf den Typ des entsprechenden Parameters (Byte
) beschränkt. Anschließend wird die dritte Überladung entfernt, da jeder Argumenttyp in der zweiten Überladung (Short
und Single
) auf den entsprechenden Typ in der dritten Überladung erweitert (Integer
und Single
). Die zweite Überladung erfordert weniger Erweiterung, sodass der Compiler sie für den Aufruf verwendet.
Im zweiten Aufruf kann der Compiler keine der Überladungen aufgrund einer Eingrenzung ausschließen. Sie beseitigt die dritte Überladung aus demselben Grund wie im ersten Aufruf, da sie die zweite Überladung mit weniger Verbreiterung der Argumenttypen aufrufen kann. Der Compiler kann jedoch nicht zwischen der ersten und der zweiten Überladung auflösen. Jeder hat einen definierten Parametertyp, der auf den entsprechenden Typ in der anderen erweitert wird (Byte
auf Short
, aber Single
auf Double
). Der Compiler generiert daher einen Überladungsauflösungsfehler.
Wenn zwei Überladungen einer Prozedur identische Signaturen aufweisen, mit der Ausnahme, dass der letzte Parameter Optional in einer und ParamArray- in der anderen deklariert wird, löst der Compiler einen Aufruf dieser Prozedur wie folgt auf:
Wenn der Aufruf das letzte Argument bereitstellt als | Löst der Compiler den Aufruf der Überladung auf, die das letzte Argument deklariert als |
---|---|
Kein Wert (Argument nicht angegeben) | Optional |
Ein einzelner Wert | Optional |
Mindestens zwei Werte in einer durch Trennzeichen getrennten Liste | ParamArray |
Ein Array einer beliebigen Länge (einschließlich eines leeren Arrays) | ParamArray |
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Modul
Erstellen von C#-Methoden mit Parametern - Training
In diesem Modul werden Methodenparameter behandelt, einschließlich Pass-by-Reference- und Pass-by-Value-Parametertypen. In diesem Modul werden auch optionale und benannte Argumente behandelt.