Im Folgenden finden Sie einen Artikel über den Unterschied zwischen Byval und ByRef in ASP, den der Herausgeber mit Ihnen geteilt hat. Interessierte Freunde, lasst uns mit dem Herausgeber erfahren!
Dateiname: | Byval.asp | Byref.asp |
Spezifischer Code: | Sub testmain () Dim A: a = 5 Rufen Sie Testby (a) an Response.write a Ende sub Sub testby (byval t) T = t+1 Ende sub Anruf testmain () anrufen %> | Sub testmain () Dim A: a = 5 Rufen Sie Testby (a) an Response.write a Ende sub Sub testby (byref t) T = t+1 Ende sub Anruf testmain () anrufen %> |
Auslaufergebnisse: | 5 | 6 |
abschließend: | HINWEIS: Die Methode zur Deklaration der T -Variablen im Subroutine -Testy (Byval T) ist Byval Das Ausführen des Ergebnis -Subroutine wirkt sich nicht auf den Wert von a aus | Hinweis: Die Art und Weise, wie die T -Variable im Unterroutine -Testy (ByRef T) deklariert ist Der Wert des Laufergebnisses A hat sich durch die Unterroutine verändert |
Nach dem Lesen werden Sie die Bedeutung des obigen Vergleichs kennen.
1. Der Referenzparameter (Ref) muss klar zugeordnet werden, bevor er als Referenzparameter in einem Funktionsmitgliedsaufruf übergeben werden kann, während der Ausgabeparameter (OUT) nicht unbedingt klar zugewiesen werden muss, bevor er in einem Funktionsmitglied als Ausgabeparameter übergeben werden kann. Der Wert muss klar zugewiesen werden, bevor das Funktionsmitglied normal zurückgibt.
2. In der Funktion wird der Referenzparameter (Ref) als ursprünglich zugewiesen und der Ausgangsparameter (OUT) als ursprünglich nicht zugewiesen.
3. Standardmäßig werden alle Parameter in C# Wert übergeben. Der Referenzpass erfolgt nur, wenn oder der Ref explizit im Modifikator des Parameters enthalten ist. Es sollte jedoch bekannt sein, dass Sie, wenn der Typ des Parameters ein Referenztyp ist, eine Referenz an ein Objekt anstelle des tatsächlichen Objekts übergeben.
Beispiel:
Die Codekopie lautet wie folgt:
sub add1 (Byval nein als int32)
Nein = Nein+100
Ende sub
sub add2 (byRef no as int32)
Nein = Nein+100
Ende sub
private sub button1_click (Absender als Objekt, E as EventArgs) Paste Taste1.click
dimm a als int32
A = 100
Add1 (a)
MSGBox ("As Wert ist:" & a) 'Show: Der Wert von a ist 100
Add2 (a)
MSGBox ("As Wert ist:" & a) 'zeigen: Der Wert von a ist 200, weil der Parameter Nr. in add2 ByRef ist, dh,
'Adresse übergeben
'Der Wert des Parameters A wird ebenfalls geändert.
Ende sub
Byval ist der Wert, der übergeben wurde. Die Quelldaten werden nicht geändert. Sie können diesen Wert als Ihre eigene lokale Variable verwenden. ByRef ist die Methode, die die Adresse übergeben hat. Die Quelldaten können geändert werden. Ihr Betrieb auf dieser Variablen wirkt sich wie das Gefühl eines Zeigers auf die Variable aus, die Sie übergeben.
In der ASP -Programmierung müssen Sie häufig einige Funktionen (oder Verfahren) selbst schreiben, um bestimmte bestimmte Funktionen zu implementieren. Zu diesem Zeitpunkt müssen Sie häufig entsprechende Parameter an die Funktionen (oder Verfahren) übergeben.
Die Datenverarbeitung in einer Funktion (oder in einem Prozess), dh, kann es erforderlich sein, den Wert des Parameters aufzubewahren oder zu ändern. Die folgenden Beispiele sind verwandte Beispiele
Verwenden Sie die folgende Funktion (testaddress), um mehrere Rückgabewerte einer Funktion möglich zu machen (eine Funktion gibt den Wert zurück, der Wert nach mehreren Parametern geändert wird)
1. BYVAL übergibt den Wert: Eine Möglichkeit, Parameterwerte anstelle der Adresse an den Prozess zu übergeben, mit dem der Prozess auf eine Kopie der Variablen zugreifen kann. Infolgedessen kann der Prozess den wahren Wert der Variablen nicht ändern.
2. BYREF übergibt den Wert: Eine Möglichkeit, Parameteradressen anstelle von Werten an den Prozess zu übergeben, mit dem der Prozess auf die tatsächlichen Variablen zugreifen kann. Infolgedessen kann der Prozess den wahren Wert der Variablen ändern. Übergeben Sie die Parameter per Adresse, sofern nicht anders angegeben.
3. Das System stellt den Wert durch ByRef aus.
Beispiel:
Die Codekopie lautet wie folgt:
dim a
a = 0
document.write "a = 0"
document.write "
Subwechsel (Byref AR)
"
Ändern a
document.write a
a = 0
document.write "
Sub Change2 (Byval AR)
"
wechseln2 a
document.write a
a = 0
document.write "
Subwechsel3 (AR)
"
wechseln3 a
document.write a
a = 0
document.write "
Funktion Change4 (Byref AR)
"
wechseln4 a
document.write a
a = 0
document.write "
Funktionsänderung5 (Byval AR)
"
wechseln5 a
document.write a
a = 0
document.write "
Funktionsänderung6 (AR)
"
wechseln6 a
document.write a
a = 0
Subwechsel (Byref AR)
AR = 111
Ende sub
Sub Change2 (Byval AR)
AR = 222
Ende sub
Subwechsel3 (AR)
AR = 333
Ende sub
Funktion Change4 (Byref AR)
AR = 444
Endfunktion
Funktionsänderung5 (Byval AR)
AR = 555
Endfunktion
Funktionsänderung6 (AR)
AR = 666
Endfunktion
====================================
Ergebnis:
a = 0
Subwechsel (Byref AR)
111
Sub Change2 (Byval AR)
0
Subwechsel3 (AR)
333
Funktion Change4 (Byref AR)
444
Funktionsänderung5 (Byval AR)
0
Funktionsänderung6 (AR)
666
Anweisung VBS ist standardmäßig ByREF, was wie VB entspricht.
Beispiel:
Option explizit
'==============================================================================================
'Parameter Pass
'1. Value -Pass -Parameter (Aufruf nach Wert)
'Funktion Testvalue (Byval A, Byval B)
'Änderungen zu den Parametern A und B in der Funktion beeinflussen die externen Variablen der Funktion nicht
''
'2. Zeigerparameter (Anruf nach Adresse)
'Funktion testaddress (Byref A, Byref B)
'Änderungen an den externen Variablen der Funktion in der Funktion
''
'Illustrate:
'1. Parameter können die meisten Typen sein, die von VBScript -Sprache wie Zahlen, Zeichen, Arrays, Objekten usw. unterstützt werden.
'2. Der Typ der Funktionsrückgabewert kann auch die meisten Typen sein, die von VBScript -Sprache wie Zahlen, Zeichen, Arrays, Objekten usw. unterstützt werden.
'3. Procedure Call -Parametermethoden ähneln den Funktionen
'==============================================================================================
Dim A1, B1
Dim A2, B2
Funktion Testvalue (Byval A, Byval B)
A = a + 1
B = B + 1
TestValue = a + b
Endfunktion
Funktion testaddress (Byref A, Byref B)
A = a + 1
B = B + 1
Testaddress = a + b
Endfunktion
A1 = 11
B1 = 33
A2 = 11
B2 = 33
Antwort.Write "Anfangswert:" & ""
Response.write "a1 =" & a1 & "" "
Antwort.Write "B1 =" & B1 & "
"
Antwort.Write "Funktion (testValue) Wert:" & TestValue (A1, B1) & "
"
Antwort.Write "Endwert:" & ""
Response.write "a1 =" & a1 & "" "
Antwort.Write "B1 =" & B1 & "
"
Antwort.Write "Anfangswert:" & ""
Response.write "a2 =" & a2 & "" "
Antwort.Write "B2 =" & B2 & "
"
Antwort.Write "Funktion (testaddress) Wert:" & testaddress (a2, b2) & "
"
Antwort.Write "Endwert:" & ""
Response.write "a2 =" & a2 & "" "
Antwort.Write "B2 =" & B2
'==================================
'Ähnlicher Prozess
'==================================
Sub test_value (byval a, byval b)
A = a + 1
B = B + 1
Ende sub
Sub test_address (byref a, byref b)
A = a + 1
B = B + 1
Ende sub
'In ähnlicher Weise übergeben ein Array, ein Objekt (oder ändern Sie seinen Wert, Attribut in einer Funktion).
'Das Objekt kann als Parameter verwendet werden
'Array, nimm den Array -Namen als Parameter
REDIM ARYTEST (2,2)
Dim intnum
Funktion ary_test (Byref a)
Ary_test = ubound (ary_test, 2)
Endfunktion
'Anruf
intnum = ary_test (intnum) 'Wert beträgt 3
%>
Das Obige handelt von dem Unterschied zwischen Byval und ByRef in ASP. Ich glaube, Sie haben davon gelernt. Für mehr verwandte Inhalte achten Sie bitte weiterhin auf den falschen neuen Technologiekanal.