A continuación se muestra un artículo sobre la diferencia entre Byval y Byref en ASP que el editor ha compartido con usted. Amigos interesados, ¡aprendamos al respecto con el editor!
Nombre del archivo: | Byval.asp | Byref.asp |
Código específico: | Sub testMain () Dim A: A = 5 Llame a Testby (a) Respuesta. Escribe un Final Sub Testby (Byval t) T = t+1 Final Llame a TestMain () %> | Sub testMain () Dim A: A = 5 Llame a Testby (a) Respuesta. Escribe un Final Sub Testby (Byref t) T = t+1 Final Llame a TestMain () %> |
Resultados de ejecución: | 5 | 6 |
en conclusión: | Nota: El método de declaración de variable T en la subrutina Testby (BYVAL T) es BYVAL Ejecutar la subrutina de resultados no afecta el valor de un | Nota: La forma en que se declara la variable t en la subrutina testby (byref t) es byref El valor del resultado de ejecución A ha cambiado a través de la subrutina |
Después de leerlo, sabrá el significado de la comparación anterior.
1. El parámetro de referencia (REF) debe asignarse claramente antes de que pueda aprobarse como un parámetro de referencia en una llamada de miembro de la función, mientras que el parámetro de salida (fuera) no necesariamente tiene que ser asignado claramente antes de que pueda pasar como un parámetro de salida en una llamada de miembro de función. El valor debe asignarse claramente antes de que el miembro de la función regrese normalmente.
2. Dentro de la función, el parámetro de referencia (REF) se considera inicialmente asignado, y el parámetro de salida (fuera) se considera inicialmente no asignado.
3. Por defecto, todos los parámetros en C# se pasan en valor. El pase de referencia solo se incluye o REF se incluye explícitamente en el modificador del parámetro. Pero debe saber que cuando el tipo de parámetro es un tipo de referencia, está pasando una referencia a un objeto en lugar del objeto real.
Ejemplo:
La copia del código es la siguiente:
Sub add1 (Byval no como int32)
No = No+100
final
sub add2 (byref no como int32)
No = No+100
final
Sub Button1_Click privado (remitente como objeto, e como eventArgs) manijas del botón
Dim a como int32
a = 100
Add1 (a)
msgbox ("El valor de A es:" y a) 'Mostrar: el valor de A es 100
Add2 (a)
msgbox ("El valor de A es:" & a) 'Mostrar: el valor de A es 200, porque el parámetro no en add2 es byref, es decir, es,
'Se aprobó la dirección, por lo que después de modificar NO en ADD2, causará
'El valor del parámetro A también se modifica.
Final
BYVAL es el valor aprobado. Los datos de origen no se modificarán. Puede usar este valor como su propia variable local. Byref es el método aprobado por la dirección. Los datos de origen pueden modificarse. Su operación en esta variable tendrá un impacto en la variable que transmite, al igual que la sensación de un puntero.
En la programación ASP, a menudo necesita escribir algunas funciones (o procedimientos) usted mismo para implementar ciertas funciones específicas. En este momento, a menudo necesita pasar los parámetros correspondientes a las funciones (o procedimientos).
Procesamiento de datos en una función (o proceso), es decir, puede ser necesario retener o cambiar el valor del parámetro. Los siguientes son ejemplos relacionados
Use la siguiente función (testAddress) para hacer que los valores de retorno múltiples de una función sea posible (una función devuelve el valor, valor después de que se cambien múltiples parámetros)
1. ByVal pasa valor: una forma de pasar los valores de los parámetros en lugar de la dirección al proceso, lo que permite que el proceso acceda a una copia de la variable. Como resultado, el proceso no puede cambiar el valor verdadero de la variable.
2. Byref pasa valor: una forma de pasar direcciones de parámetros en lugar de valores al proceso, lo que permite que el proceso acceda a las variables reales. Como resultado, el proceso puede cambiar el valor real de la variable. Pase los parámetros por dirección a menos que se especifique lo contrario.
3. El sistema predeterminado pasa el valor por Byref.
ejemplo:
La copia del código es la siguiente:
atenuar
a = 0
document.write "a = 0"
document.write "
Sub Cambio (Byref AR)
"
Cambiar un
document.swrite a
a = 0
document.write "
Sub Change2 (Byval AR)
"
cambiar2 a
document.swrite a
a = 0
document.write "
Sub Change3 (AR)
"
cambio3 a
document.swrite a
a = 0
document.write "
Cambio de funciones4 (Byref AR)
"
cambio4 a
document.swrite a
a = 0
document.write "
cambio de función5 (Byval AR)
"
cambio5 a
document.swrite a
a = 0
document.write "
Cambio de funciones6 (AR)
"
cambio6 a
document.swrite a
a = 0
Sub Cambio (Byref AR)
AR = 111
final
Sub Change2 (Byval AR)
AR = 222
final
Sub Change3 (AR)
AR = 333
final
Cambio de funciones4 (Byref AR)
AR = 444
función final
cambio de función5 (Byval AR)
AR = 555
función final
Cambio de funciones6 (AR)
AR = 666
función final
=================================
resultado:
a = 0
Sub Cambio (Byref AR)
111
Sub Change2 (Byval AR)
0
Sub Change3 (AR)
333
Cambio de funciones4 (Byref AR)
444
cambio de función5 (Byval AR)
0
Cambio de funciones6 (AR)
666
La instrucción VBS es Byref de forma predeterminada, que es lo mismo que VB, por dirección.
ejemplo:
Opción explícita
'=====================================================================================================================================================
'Pase de parámetro
'1. Parámetro de pase de valor (llamar por valor)
'Función TestValue (Byval A, BYVAL B)
'Los cambios en los parámetros A y B en la función no afectan las variables externas de la función
'
'2. Parámetros del puntero (llamada por dirección)
'Función TestAddress (Byref A, Byref B)
'Cambios a las variables externas de la función en la función
'
'Ilustrar:
'1. Los parámetros pueden ser la mayoría de los tipos compatibles con el lenguaje VBScript, como números, caracteres, matrices, objetos, etc.
'2. El tipo de valor de retorno de la función también puede ser la mayoría de los tipos compatibles con el lenguaje VBScript, como números, caracteres, matrices, objetos, etc.
'3. Los métodos de parámetros de llamadas de procedimiento son similares a las funciones
'=====================================================================================================================================================
Dim A1, B1
Dim A2, B2
Función TestValue (Byval A, BYVAL B)
A = a + 1
B = B + 1
TestValue = a + b
Función final
Función testAddress (Byref A, Byref b)
A = a + 1
B = B + 1
TestAddress = a + b
Función final
A1 = 11
B1 = 33
A2 = 11
B2 = 33
Response.write "Valor inicial:" y ""
Response.write "a1 =" & a1 & ""
Response.write "b1 =" & b1 & "
"
Response.Write "Función (TestValue) Valor:" & TestValue (A1, B1) & "
"
Response.write "Valor final:" y ""
Response.write "a1 =" & a1 & ""
Response.write "b1 =" & b1 & "
"
Response.write "Valor inicial:" y ""
Response.write "A2 =" & A2 y ""
Response.write "b2 =" & b2 & "
"
Response.Write "Función (TestAddress) Valor:" & TestAddress (A2, B2) & "
"
Response.write "Valor final:" y ""
Response.write "A2 =" & A2 y ""
Response.write "B2 =" y B2
'===============================
'Proceso similar
'===============================
Sub test_value (Byval A, Byval B)
A = a + 1
B = B + 1
Final
Sub test_address (Byref A, Byref b)
A = a + 1
B = B + 1
Final
'Del mismo modo, pasar una matriz, objeto (o cambiar su valor, atributo en una función)
'El objeto se puede usar como parámetro
'Matriz, tome el nombre de la matriz como parámetro
Redim Arytest (2,2)
Dim intnum
función ary_test (byref a)
Ary_test = Ubound (ary_test, 2)
función final
'Llamar
intnum = ary_test (intnum) 'El valor es 3
%>
Lo anterior trata sobre la diferencia entre ByVal y Byref en ASP. Creo que lo has aprendido. Para obtener más contenido relacionado, continúe prestando atención al nuevo canal de tecnología incorrecto.