asp 에서 Byval 과 Byref 의 차이

6870 단어 Byvalyref
요즘 에는 성숙 한 cms 시스템 을 보면 ByVal 을 많이 써 요.
아래 의 예 를 먼저 보다
파일 이름:
ByVal.asp
ByRef.asp
구체 적 인 코드:
<%
Sub TestMain()
Dim A : A=5
Call TestBy(A)
Response.write A
End Sub
Sub TestBy(ByVal T)
T=T+1
End sub
call TestMain()
%>
<%
Sub TestMain()
Dim A : A=5
Call TestBy(A)
Response.write A
End Sub
Sub TestBy(ByRef T)
T=T+1
End sub
call TestMain()
%>
실행 결과:
5
6
결론:
메모:서브루틴 TestBy(ByVal T)의 T 변수 설명 방식 은 ByVal 실행 결과 서브루틴 이 A 의 값 에 영향 을 주지 않 음
메모:서브루틴 TestBy(ByRef T)에서 T 변 수 를 설명 하 는 방식 은 ByRef 실행 결과 A 의 값 이 서브루틴 을 통 해 변경 되 었 습 니 다.
다 보 았 으 니 위의 비 교 를 보면 뜻 을 설명 할 수 있 겠 지.
1.인용 매개 변수(ref)는 인용 매개 변수 로 함수 구성원 호출 에서 전달 할 수 있 기 전에 반드시 할당 을 명 확 히 해 야 합 니 다.출력 매개 변수(out)는 출력 매개 변수 로 함수 구성원 호출 에서 전달 할 수 있 기 전에 할당 을 명 확 히 해 야 하지 않 습 니 다.이 함수 구성원 이 정상적으로 돌아 오기 전에 반드시 할당 을 명 확 히 해 야 합 니 다.
2.함수 내부 에서 인용 매개 변수(ref)는 초기 할당 으로 간주 되 고 출력 매개 변수(out)는 초기 할당 되 지 않 은 값 으로 간주 된다. 
3.기본적으로 C\#의 모든 매개 변 수 는 값 전달 입 니 다.인자 의 수정자 에 out 이나 ref 를 명확 하 게 포함 시 켜 야 인용 전달 입 니 다.그러나 알 아야 할 것 은 매개 변수의 유형 이 인용 유형 일 때 실제 대상 이 아 닌 대상 의 인용 을 전달 하 는 것 이다.
실례: 

sub Add1(ByVal no as int32) 
no=no+100 
end sub 

sub Add2(ByRef no as int32) 
no=no+100 
end sub 

private sub button1_click(sender as object,e as eventargs)handles button1.click 
dim a as int32 
a=100 
Add1(a) 
msgbox ("a   :" & a) ' :a   100 
Add2(a) 
msgbox ("a   :" & a) ' :a   200,  Add2    no ByRef,  
'    ,   Add2  no     ,     
'  a      。 
End Sub 
ByVal 은 전달 값 입 니 다. 원본 데 이 터 는 수정 되 지 않 습 니 다.이 값 을 자신의 부분 변수 로 사용 할 수 있 습 니 다.ByRef 는 주 소 를 전달 하 는 것 입 니 다.원본 데이터 가 수 정 될 수 있 습 니 다.이 변수 에 대한 작업 은 포인터 와 같은 변수 에 영향 을 줄 것 입 니 다.
ASP 프로 그래 밍 에 서 는 특정한 기능 을 수행 하기 위해 함수(또는 과정)를 직접 작성 해 야 합 니 다.이 때 는 함수(또는 과정)에 해당 하 는 인 자 를 전달 해 야 합 니 다.
함수(또는 과정)에서 데이터 처 리 를 합 니 다.즉,매개 변수의 값 을 보류 하거나 변경 해 야 할 수도 있 습 니 다.아래 에 관련 범례 가 있 습 니 다.
아래 함수(TestAddress)를 사용 하면 한 함수 의 여러 반환 값 을 가능 하 게 할 수 있 습 니 다.(한 함수 의 반환 값,여러 매개 변수 가 변 경 된 값)
1.ByVal 전송 값:주 소 를 과정 에 전달 하 는 방식 이 아니 라 매개 변 수 를 복사 하 는 방식 입 니 다.결과,과정 은 변수의 진정한 값 을 바 꿀 수 없습니다.
2.ByRef 전송 값:값 을 과정 에 전달 하 는 것 이 아니 라 매개 변수 주 소 를 전달 하 는 방식 으로 과정 을 실제 변수 에 접근 합 니 다.결과,과정 은 변수의 진정한 값 을 바 꿀 수 있다.따로 설명 하지 않 으 면 주소 에 따라 파 라 메 터 를 전달 합 니 다.
3.시스템 의 기본 값 은 ByRef 전송 값 입 니 다.
예:

<SCRIPT LANGUAGE="vbScript"> 
dim a 
a=0 
document.write "a=0" 
document.write "<br/>sub change(byref ar)<br/>" 
change a 
document.write a 
a=0 
document.write "<br/>sub change2(ByVal ar)<br/>" 
change2 a 
document.write a 
a=0 
document.write "<br/>sub change3( ar)<br/>" 
change3 a 
document.write a 
a=0 
document.write "<br/>function change4(byref ar)<br/>" 
change4 a 
document.write a 
a=0 
document.write "<br/>function change5(ByVal ar)<br/>" 
change5 a 
document.write a 
a=0 
document.write "<br/>function change6( ar)<br/>" 
change6 a 
document.write a 
a=0 
sub change(byref ar) 
ar=111 
end sub 
sub change2(ByVal ar) 
ar=222 
end sub 
sub change3( ar) 
ar=333 
end sub 
function change4(byref ar) 
ar=444 
end function 
function change5(ByVal ar) 
ar=555 
end function 
function change6( ar) 
ar=666 
end function 
</SCRIPT> 
결과:
a=0
sub change(byref ar)
111
sub change2(ByVal ar)
0
sub change3( ar)
333
function change4(byref ar)
444
function change5(ByVal ar)
0
function change6( ar)
666
vbs 기본 값 이 by Ref 라 는 것 을 설명 합 니 다.이 점 은 VB 와 마찬가지 로 주소 로 합 니 다.
범례:

<%@LANGUAGE="VBSCRIPT"%> 
<% 
Option Explicit 
'=================================================================== 
'      
' 1.      (Call By Value) 
' Function TestValue(ByVal A,ByVal B) 
'       A、B                
' 
' 2.     (Call By Address) 
' Function TestAddress(ByRef A,Byref B) 
'       A、B                
' 
'   : 
' 1.        、  、  、   VBSCRIPT            
' 2.               、  、  、   VBSCRIPT            
' 3.               
'=================================================================== 
Dim A1,B1 
Dim A2,B2 
Function TestValue(ByVal A,ByVal B) 
A = A + 1 
B = B + 1 
TestValue = A + B 
End Function 
Function TestAddress(ByRef A,Byref B) 
A = A + 1 
B = B + 1 
TestAddress = A + B 
End Function 
A1 = 11 
B1 = 33 
A2 = 11 
B2 = 33 
Response.Write "  :" & "&nbsp;" 
Response.Write "A1=" & A1 & "&nbsp;" 
Response.Write "B1=" & B1 & "<BR>" 
Response.Write "  (TestValue) :" & TestValue(A1,B1) & "<BR>" 
Response.Write "  :" & "&nbsp;" 
Response.Write "A1=" & A1 & "&nbsp;" 
Response.Write "B1=" & B1 & "<BR><BR><BR>" 
Response.Write "  :" & "&nbsp;" 
Response.Write "A2=" & A2 & "&nbsp;" 
Response.Write "B2=" & B2 & "<BR>" 
Response.Write "  (TestAddress) :" & TestAddress(A2,B2) & "<BR>" 
Response.Write "  :" & "&nbsp;" 
Response.Write "A2=" & A2 & "&nbsp;" 
Response.Write "B2=" & B2 
'====================== 
'      
'====================== 
Sub Test_Value(ByVal A,ByVal B) 
A = A + 1 
B = B + 1 
End Sub 
Sub Test_Address(ByRef A,Byref B) 
A = A + 1 
B = B + 1 
End Sub 
'   ,    、  (          、  ) 
'               
'   ,          
redim aryTest(2,2) 
dim intNum 
function Ary_Test(ByRef A) 
Ary_Test = Ubound(Ary_Test,2) 
end function 
'   
intNum = Ary_Test(intNum) '   3 
%> 

예 를 들 면:
function makeContent(Byval contentID, Byval page, Byval isMakeHtml)
asp 에서 Byval 과 Byref 의 차이 점 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Byval 과 Byref 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기