濮阳杆衣贸易有限公司

主頁 > 知識庫 > asp中Byval與Byref的區(qū)別

asp中Byval與Byref的區(qū)別

熱門標簽:修改地圖標注 金昌電話機器人價格 鳳臺百度地圖標注店 武夷山旅游地圖標注 外呼系統(tǒng)API接口 個人可以辦理400電話么 萊西電子地圖標注 縣域地圖標注打印店 怎么在地圖標注自己

最近看很多成熟的cms系統(tǒng)中就用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的值通過子程序發(fā)生了改變

看完了,上面的比較就知道說明意思了吧。

1、引用參數(shù)(ref)在可以作為引用參數(shù)在函數(shù)成員調(diào)用中傳遞之前,必須已明確賦值,而輸出參數(shù)(out)在可以作為輸出參數(shù)在函數(shù)成員調(diào)用中傳遞之前不一定要明確賦值,在該函數(shù)成員正常返回前都必須已明確賦值。
2、在函數(shù)內(nèi)部,引用參數(shù)(ref)被視為初始已賦值,輸出參數(shù)(out)被視為初始未賦值。 
3、默認地,C#中的所有參數(shù)都是值傳遞。只有在參數(shù)的修飾符中明確包含out或ref,才是引用傳遞。但是需要知道的是,當參數(shù)的類型是引用類型時,你傳遞的是一個對象的引用而不是實際的對象。

實例: 

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中的參數(shù)no為ByRef,即 
'地址傳遞,因此在Add2中對no進行修改后,將會導致 
'參數(shù)a的值也被修改。 
End Sub 

ByVal是傳遞值 源數(shù)據(jù)不會被修改,你可以把這個值當作自己的局部變量來使用;ByRef是傳遞地址,源數(shù)據(jù)可能被修改,你對這個變量的操作將對你傳入的那個變量產(chǎn)生影響,就像指針的感覺。

在ASP編程中,經(jīng)常需要自己編寫一些函數(shù)(或過程)來實現(xiàn)某些特定的功能,這時往往需要向函數(shù)(或過程)傳遞相應的參數(shù)
在函數(shù)(或過程)中進行數(shù)據(jù)處理,即有可能需要保留或改變參數(shù)的值,下面有相關范例
用下面的函數(shù)(TestAddress)就可以使一個函數(shù)多個返回值成為可能(一個函數(shù)返回值,多個參數(shù)改變后的值)
1、ByVal傳值:一種將參數(shù)值而不是將地址傳遞給過程的方式,這就使過程訪問到變量的復本。結果,過程不可改變變量的真正值。
2、ByRef傳值:一種將參數(shù)地址而不是將值傳遞給過程的方式,這就使過程訪問到實際的變量。結果,過程可改變變量的真正值。除非另作說明,否則按地址傳遞參數(shù)。
3、系統(tǒng)默認的是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默認是byRef,這點和VB一樣, 按地址。

范例:

%@LANGUAGE="VBSCRIPT"%> 
% 
Option Explicit 
'=================================================================== 
' 參數(shù)傳遞 
' 1.值傳遞參數(shù) (Call By Value) 
' Function TestValue(ByVal A,ByVal B) 
' 函數(shù)內(nèi)參數(shù) A、B 改變 不影響 函數(shù)的外部變量 
' 
' 2.指針參數(shù) (Call By Address) 
' Function TestAddress(ByRef A,Byref B) 
' 函數(shù)內(nèi)參數(shù) A、B 改變 影響到 函數(shù)的外部變量 
' 
' 說明: 
' 1. 參數(shù)可以是數(shù)字、字符、數(shù)組、對象等VBSCRIPT語言所支持的大部分類型 
' 2. 函數(shù)返回值的類型也可以是數(shù)字、字符、數(shù)組、對象等VBSCRIPT語言所支持的大部分類型 
' 3. 過程調(diào)用參數(shù)方法與函數(shù)類似 
'=================================================================== 
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 "函數(shù)(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 "函數(shù)(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 
' 類似,傳遞數(shù)組、對象(或者在函數(shù)中改變其值、屬性) 
'對象直接把對象名作為參數(shù)即可 
' 數(shù)組,把數(shù)組名稱作為參數(shù) 
redim aryTest(2,2) 
dim intNum 
function Ary_Test(ByRef A) 
Ary_Test = Ubound(Ary_Test,2) 
end function 
'調(diào)用 
intNum = Ary_Test(intNum) '值為 3 
%> 

例如:

function makeContent(Byval contentID, Byval page, Byval isMakeHtml)

到此這篇關于asp中Byval與Byref的區(qū)別的文章就介紹到這了,更多相關Byval與Byref內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • JavaScript 函數(shù)參數(shù)是傳值(byVal)還是傳址(byRef) 分享
  • Asp中通過簡單的例子理解下ByVal和ByRef的用法
  • vbs(asp) ByVal ByRef函數(shù)調(diào)用使用說明
  • 關于 byval 與 byref 的區(qū)別分析總結
  • ByVal和ByRef(編寫ASP子程序所用到命令)
  • .Net 下區(qū)別使用 ByRef/ByVal 的重要性 分享

標簽:邢臺 赤峰 涼山 通遼 南京 楚雄 清遠 上海

巨人網(wǎng)絡通訊聲明:本文標題《asp中Byval與Byref的區(qū)別》,本文關鍵詞  asp,中,Byval,與,Byref,的,區(qū)別,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp中Byval與Byref的區(qū)別》相關的同類信息!
  • 本頁收集關于asp中Byval與Byref的區(qū)別的相關信息資訊供網(wǎng)民參考!
  • 推薦文章

    上一篇:asp緩存類

    下一篇:全面認識ASP注入技巧

    尼勒克县| 连州市| 庆云县| 固原市| 肥乡县| 任丘市| 崇文区| 教育| 都匀市| 宣化县| 霍州市| 务川| 德阳市| 通许县| 溧阳市| 曲麻莱县| 澄城县| 威信县| 栾城县| 沙洋县| 新绛县| 绵竹市| 边坝县| 出国| 东乌| 军事| 西青区| 瑞安市| 高要市| 西贡区| 阿克陶县| 遵化市| 都兰县| 莱芜市| 饶河县| 石泉县| 德兴市| 鄢陵县| 瑞丽市| 鲜城| 大姚县|