asp 에서 Byval 과 Byref 의 차이
아래 의 예 를 먼저 보다
파일 이름:
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 " :" & " "
Response.Write "A1=" & A1 & " "
Response.Write "B1=" & B1 & "<BR>"
Response.Write " (TestValue) :" & TestValue(A1,B1) & "<BR>"
Response.Write " :" & " "
Response.Write "A1=" & A1 & " "
Response.Write "B1=" & B1 & "<BR><BR><BR>"
Response.Write " :" & " "
Response.Write "A2=" & A2 & " "
Response.Write "B2=" & B2 & "<BR>"
Response.Write " (TestAddress) :" & TestAddress(A2,B2) & "<BR>"
Response.Write " :" & " "
Response.Write "A2=" & A2 & " "
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 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!