Abaixo está um artigo sobre a diferença entre Byval e Byref no ASP que o editor compartilhou com você. Amigos interessados, vamos aprender sobre isso com o editor!
Nome do arquivo: | Byval.asp | Byref.asp |
Código específico: | Subestmain () Dim a: a = 5 Ligue para o testby (a) Response.Write a Final sub Subestby (byval t) T = t+1 Final sub Ligue para testmain () %> | Subestmain () Dim a: a = 5 Ligue para o testby (a) Response.Write a Final sub Subestby (byref t) T = t+1 Final sub Ligue para testmain () %> |
Resultados em execução: | 5 | 6 |
para concluir: | Nota: O método de declaração de variável T no sub -rotino testby (BYVAL T) é BYVAL Executar a sub -rotina de resultado não afeta o valor de um | Nota: a maneira como a variável T na sub -rotina testby (byref t) é declarada é byref O valor do resultado da execução A mudou através da sub -rotina |
Depois de ler, você saberá o significado da comparação acima.
1. O parâmetro de referência (ref) deve ser claramente atribuído antes de poder ser passado como um parâmetro de referência em uma chamada de membro da função, enquanto o parâmetro de saída (out) não precisa necessariamente ser claramente atribuído antes que ele possa ser passado como um parâmetro de saída em uma chamada de membro da função. O valor deve ser claramente atribuído antes que o membro da função retorne normalmente.
2. Dentro da função, o parâmetro de referência (ref) é considerado como atribuído inicialmente e o parâmetro de saída (out) é considerado inicialmente não atribuído.
3. Por padrão, todos os parâmetros em C# são passados em valor. O passe de referência é apenas se o out ou o ref for explicitamente incluído no modificador do parâmetro. Mas deve -se saber que quando o tipo de parâmetro é um tipo de referência, você está passando uma referência a um objeto em vez do objeto real.
Exemplo:
A cópia do código é a seguinte:
sub add1 (byval no como int32)
Não = Não+100
final sub
sub add2 (byref no como int32)
Não = Não+100
final sub
Sub Button1_Click privado (remetente como objeto, e como EventArgs) lida com botão1.click
dim a como int32
a = 100
Add1 (a)
MsgBox ("A's Value é:" & a) 'show: o valor de A é 100
Add2 (a)
msgbox ("a valor de a é:" & a) 'show: o valor de a é 200, porque o parâmetro não no add2 é byref, isto é,
'Endereço aprovado, então, depois de modificar o não no add2, ele causará
'O valor do parâmetro A também é modificado.
Final sub
BYVAL é o valor aprovado. Os dados de origem não serão modificados. Você pode usar esse valor como sua própria variável local. Byref é o método que passou no endereço. Os dados de origem podem ser modificados. Sua operação nessa variável terá um impacto na variável que você passa, assim como a sensação de um ponteiro.
Na programação do ASP, geralmente você precisa escrever algumas funções (ou procedimentos) para implementar determinadas funções específicas. Neste momento, você geralmente precisa passar parâmetros correspondentes para as funções (ou procedimentos).
Processamento de dados em uma função (ou processo), ou seja, pode ser necessário reter ou alterar o valor do parâmetro. Os seguintes são exemplos relacionados
Use a seguinte função (TestAddress) para possibilitar vários valores de retorno de uma função (uma função retorna valor, valor após os vários parâmetros são alterados)
1. BYVAL passa o valor: uma maneira de passar os valores dos parâmetros em vez de endereço para o processo, o que permite que o processo acesse uma cópia da variável. Como resultado, o processo não pode alterar o valor verdadeiro da variável.
2. Byref passa o valor: uma maneira de passar endereços de parâmetros em vez de valores para o processo, o que permite que o processo acesse as variáveis reais. Como resultado, o processo pode alterar o valor verdadeiro da variável. Passe os parâmetros por endereço, a menos que especificado de outra forma.
3. O sistema padrão passa pelo valor BYREF.
exemplo:
A cópia do código é a seguinte:
dim a
a = 0
document.write "a = 0"
document.write "
Sub Change (BYREF AR)
"
Mude a
document.write a
a = 0
document.write "
Sub Change2 (BYVAL AR)
"
mudança2 a
document.write a
a = 0
document.write "
Sub Change3 (AR)
"
mudança3 a
document.write a
a = 0
document.write "
Mudança de função4 (ByRef AR)
"
mudança4 a
document.write a
a = 0
document.write "
Mudança de função5 (BYVAL AR)
"
alteração5 a
document.write a
a = 0
document.write "
Mudança de função6 (AR)
"
alteração6 a
document.write a
a = 0
Sub Change (BYREF AR)
AR = 111
final sub
Sub Change2 (BYVAL AR)
AR = 222
final sub
Sub Change3 (AR)
AR = 333
final sub
Mudança de função4 (ByRef AR)
AR = 444
Função final
Mudança de função5 (BYVAL AR)
AR = 555
Função final
Mudança de função6 (AR)
AR = 666
Função final
=================================
resultado:
a = 0
Sub Change (BYREF AR)
111
Sub Change2 (BYVAL AR)
0
Sub Change3 (AR)
333
Mudança de função4 (ByRef AR)
444
Mudança de função5 (BYVAL AR)
0
Mudança de função6 (AR)
666
Instrução O VBS é ByRef por padrão, que é o mesmo que VB, por endereço.
exemplo:
Opção explícita
'==============================================================================================
'PASSO DE PARAMETRO
'1. Value Pass Parameter (Chamada por valor)
'Function testValue (BYVAL A, BYVAL B)
'Alterações nos parâmetros A e B na função não afetam as variáveis externas da função
'
2.
'Função testaddress (Byref A, Byref B)
'Alterações nas variáveis externas da função na função
'
'Ilustre:
'1. Parâmetros podem ser a maioria dos tipos suportados pela linguagem VBScript, como números, caracteres, matrizes, objetos, etc.
'2. O tipo de valor de retorno da função também pode ser a maioria dos tipos suportados pela linguagem VBScript, como números, caracteres, matrizes, objetos, etc.
'3. Métodos de parâmetros de chamada de procedimento são semelhantes às funções
'==============================================================================================
Dim a1, b1
Dim A2, B2
Função testValue (byval a, byval b)
A = a + 1
B = b + 1
TestValue = A + B
Função final
Função testaddress (Byref A, Byref B)
A = a + 1
B = b + 1
TestAddress = a + b
Função final
A1 = 11
B1 = 33
A2 = 11
B2 = 33
Response.Write "Valor inicial:" & ""
Response.Write "A1 =" & A1 & "
Response.Write "B1 =" & B1 & "
"
Response.Write "Função (TestValue) Valor:" & TestValue (A1, B1) & "
"
Response.Write "Valor final:" & "
Response.Write "A1 =" & A1 & "
Response.Write "B1 =" & B1 & "
"
Response.Write "Valor inicial:" & ""
Response.Write "A2 =" & A2 & ""
Response.Write "B2 =" & B2 & "
"
Response.Write "Função (TestAddress) Valor:" & TestAddress (A2, B2) & "
"
Response.Write "Valor final:" & "
Response.Write "A2 =" & A2 & ""
Response.Write "B2 =" & B2
'==============================
'Processo semelhante
'==============================
Subest_value (byval a, byval b)
A = a + 1
B = b + 1
Final sub
Subest_address (byref a, byref b)
A = a + 1
B = b + 1
Final sub
'Da mesma forma, passando uma matriz, objeto (ou alterando seu valor, atributo em uma função)
'O objeto pode ser usado como um parâmetro
'Array, pegue o nome da matriz como parâmetro
Redim Arytest (2,2)
Dim Intnum
função ary_test (byref a)
Ary_test = ubound (ary_test, 2)
Função final
'Chamar
intnum = ary_test (intnum) 'o valor é 3
%>
O exposto acima é sobre a diferença entre Byval e Byref no ASP. Eu acredito que você aprendeu sobre isso. Para mais conteúdo relacionado, continue prestando atenção ao novo canal de tecnologia errada.