ด้านล่างเป็นบทความเกี่ยวกับความแตกต่างระหว่าง Byval และ Byref ใน ASP ที่บรรณาธิการได้แบ่งปันกับคุณ เพื่อนที่สนใจมาเรียนรู้เกี่ยวกับมันกับบรรณาธิการ!
ชื่อไฟล์: | byval.asp | byref.asp |
รหัสเฉพาะ: | testmain ย่อย () Dim A: A = 5 โทร testby (a) Response.write a สิ้นสุดย่อย Sub Testby (Byval T) t = t+1 สิ้นสุดย่อย โทรทดสอบ () - | testmain ย่อย () Dim A: A = 5 โทร testby (a) Response.write a สิ้นสุดย่อย Sub Testby (Byref T) t = t+1 สิ้นสุดย่อย โทรทดสอบ () - |
ผลการทำงาน: | 5 | 6 |
สรุปแล้ว: | หมายเหตุ: วิธีการประกาศตัวแปร t ในการทดสอบรูทีนย่อย (byval t) เป็น byval การเรียกใช้รูทีนย่อยผลลัพธ์ไม่ส่งผลกระทบต่อค่าของก | หมายเหตุ: วิธีที่ตัวแปร t ในการทดสอบรูทีนย่อย (byref t) ถูกประกาศคือ byref ค่าของผลการรัน A มีการเปลี่ยนแปลงผ่านรูทีนย่อย |
หลังจากอ่านแล้วคุณจะรู้ความหมายของการเปรียบเทียบข้างต้น
1. พารามิเตอร์อ้างอิง (REF) จะต้องได้รับการกำหนดอย่างชัดเจนก่อนที่จะสามารถส่งผ่านเป็นพารามิเตอร์อ้างอิงในการเรียกสมาชิกฟังก์ชั่นในขณะที่พารามิเตอร์เอาท์พุท (ออก) ไม่จำเป็นต้องได้รับการกำหนดอย่างชัดเจนก่อนที่จะสามารถส่งผ่านเป็นพารามิเตอร์เอาต์พุตในการเรียกสมาชิกฟังก์ชั่น ค่าจะต้องได้รับการกำหนดอย่างชัดเจนก่อนที่สมาชิกฟังก์ชั่นจะกลับมาตามปกติ
2. ภายในฟังก์ชั่นพารามิเตอร์อ้างอิง (REF) ได้รับการยกย่องว่าเป็นที่กำหนดไว้ในขั้นต้นและพารามิเตอร์เอาต์พุต (OUT) ถือว่าเป็นตอนแรกที่ไม่ได้กำหนด
3. โดยค่าเริ่มต้นพารามิเตอร์ทั้งหมดใน C# จะถูกส่งผ่านในค่า การอ้างอิงผ่านจะมีเฉพาะในกรณีที่ออกหรืออ้างอิงอย่างชัดเจนในตัวดัดแปลงของพารามิเตอร์ แต่ควรทราบว่าเมื่อประเภทของพารามิเตอร์เป็นประเภทอ้างอิงคุณจะผ่านการอ้างอิงไปยังวัตถุแทนวัตถุจริง
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
sub add1 (byval no เป็น int32)
ไม่ = ไม่+100
สิ้นสุดย่อย
sub add2 (byref no เป็น int32)
ไม่ = ไม่+100
สิ้นสุดย่อย
Private Sub Button1_Click (ผู้ส่งเป็น Object, E as eventArgs) จัดการ button1.click
สลัว A เป็น int32
A = 100
add1 (a)
msgbox ("ค่า A คือ:" & a) 'แสดง: ค่าของ A คือ 100
add2 (a)
msgbox ("ค่า A คือ:" & a) 'แสดง: ค่าของ A คือ 200 เพราะพารามิเตอร์ NO ใน Add2 คือ Byref นั่นคือ
'ที่อยู่ผ่านไปดังนั้นหลังจากแก้ไข NO ใน ADD2 มันจะทำให้เกิด
'ค่าของพารามิเตอร์ A ได้รับการแก้ไขเช่นกัน
สิ้นสุดย่อย
Byval เป็นค่าที่ผ่านไป ข้อมูลต้นฉบับจะไม่ถูกแก้ไข คุณสามารถใช้ค่านี้เป็นตัวแปรท้องถิ่นของคุณเอง Byref เป็นวิธีที่ผ่านที่อยู่ ข้อมูลต้นฉบับอาจได้รับการแก้ไข การทำงานของคุณในตัวแปรนี้จะมีผลกระทบต่อตัวแปรที่คุณส่งผ่านเช่นเดียวกับความรู้สึกของตัวชี้
ในการเขียนโปรแกรม ASP คุณมักจะต้องเขียนฟังก์ชั่นบางอย่าง (หรือขั้นตอน) ด้วยตนเองเพื่อใช้ฟังก์ชั่นเฉพาะบางอย่าง ในเวลานี้คุณมักจะต้องผ่านพารามิเตอร์ที่สอดคล้องกันไปยังฟังก์ชั่น (หรือขั้นตอน)
การประมวลผลข้อมูลในฟังก์ชัน (หรือกระบวนการ) นั่นคืออาจจำเป็นต้องรักษาหรือเปลี่ยนค่าของพารามิเตอร์ ต่อไปนี้เป็นตัวอย่างที่เกี่ยวข้อง
ใช้ฟังก์ชั่นต่อไปนี้ (testaddress) เพื่อสร้างค่าการส่งคืนหลายรายการของฟังก์ชันที่เป็นไปได้ (ฟังก์ชันส่งคืนค่าค่าหลังจากเปลี่ยนพารามิเตอร์หลายตัว)
1. Byval ผ่านค่า: วิธีการส่งค่าพารามิเตอร์แทนที่อยู่ไปยังกระบวนการซึ่งอนุญาตให้กระบวนการเข้าถึงสำเนาของตัวแปร เป็นผลให้กระบวนการไม่สามารถเปลี่ยนค่าที่แท้จริงของตัวแปร
2. Byref ผ่านค่า: วิธีการส่งที่อยู่พารามิเตอร์แทนค่าไปยังกระบวนการซึ่งช่วยให้กระบวนการเข้าถึงตัวแปรจริง เป็นผลให้กระบวนการสามารถเปลี่ยนค่าที่แท้จริงของตัวแปร ผ่านพารามิเตอร์ตามที่อยู่เว้นแต่จะระบุไว้เป็นอย่างอื่น
3. ระบบเริ่มต้นที่จะผ่านค่าโดย Byref
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
หรี่
A = 0
document.write "a = 0"
document.write "
การเปลี่ยนแปลงย่อย (Byref AR)
-
เปลี่ยนไฟล์
document.write a
A = 0
document.write "
Sub Change2 (Byval AR)
-
Change2 A
document.write a
A = 0
document.write "
Sub Change3 (AR)
-
Change3 A
document.write a
A = 0
document.write "
ฟังก์ชั่น Change4 (Byref AR)
-
Change4 A
document.write a
A = 0
document.write "
ฟังก์ชั่น Change5 (Byval AR)
-
Change5 A
document.write a
A = 0
document.write "
ฟังก์ชั่นการเปลี่ยนแปลง 6 (AR)
-
Change6 A
document.write a
A = 0
การเปลี่ยนแปลงย่อย (Byref AR)
AR = 111
สิ้นสุดย่อย
Sub Change2 (Byval AR)
AR = 222
สิ้นสุดย่อย
Sub Change3 (AR)
AR = 333
สิ้นสุดย่อย
ฟังก์ชั่น Change4 (Byref AR)
AR = 444
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น Change5 (Byval AR)
AR = 555
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นการเปลี่ยนแปลง 6 (AR)
AR = 666
ฟังก์ชันสิ้นสุด
-
ผลลัพธ์:
A = 0
การเปลี่ยนแปลงย่อย (Byref AR)
111
Sub Change2 (Byval AR)
0
Sub Change3 (AR)
333
ฟังก์ชั่น Change4 (Byref AR)
444
ฟังก์ชั่น Change5 (Byval AR)
0
ฟังก์ชั่นการเปลี่ยนแปลง 6 (AR)
666
คำสั่ง VBS เป็น Byref โดยค่าเริ่มต้นซึ่งเหมือนกับ VB ตามที่อยู่
ตัวอย่าง:
ตัวเลือกอย่างชัดเจน
-
'พารามิเตอร์ผ่าน
'1. พารามิเตอร์ค่าผ่าน (เรียกตามค่า)
'ฟังก์ชั่น TestValue (Byval A, Byval B)
'การเปลี่ยนแปลงพารามิเตอร์ A และ B ในฟังก์ชั่นไม่ส่งผลกระทบต่อตัวแปรภายนอกของฟังก์ชัน
-
'2. พารามิเตอร์ตัวชี้ (โทรตามที่อยู่)
'ฟังก์ชั่น testaddress (Byref A, Byref B)
'การเปลี่ยนแปลงตัวแปรภายนอกของฟังก์ชันในฟังก์ชัน
-
'ภาพประกอบ:
'1. พารามิเตอร์สามารถรองรับได้ส่วนใหญ่โดยภาษา VBScript เช่นตัวเลขอักขระอาร์เรย์วัตถุ ฯลฯ
'2. ประเภทของฟังก์ชันการส่งคืนค่าสามารถเป็นประเภทส่วนใหญ่ที่รองรับโดยภาษา VBScript เช่นตัวเลขอักขระอาร์เรย์วัตถุ ฯลฯ
'3. วิธีการพารามิเตอร์การโทรขั้นตอนคล้ายกับฟังก์ชั่น
-
สลัว A1, B1
สลัว A2, b2
ฟังก์ชั่น TestValue (Byval A, Byval B)
a = a + 1
b = b + 1
testValue = a + b
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น testaddress (byref a, byref b)
a = a + 1
b = b + 1
testaddress = a + b
ฟังก์ชันสิ้นสุด
a1 = 11
B1 = 33
a2 = 11
B2 = 33
Response.write "ค่าเริ่มต้น:" & ""
Response.write "A1 =" & A1 & ""
Response.write "b1 =" & b1 & "
-
response.write "ฟังก์ชั่น (testValue) ค่า:" & testValue (A1, B1) & "
-
Response.write "ค่าสุดท้าย:" & ""
Response.write "A1 =" & A1 & ""
Response.write "b1 =" & b1 & "
-
Response.write "ค่าเริ่มต้น:" & ""
Response.write "A2 =" & A2 & ""
Response.write "b2 =" & b2 & "
-
response.write "ฟังก์ชั่น (testaddress) ค่า:" & testaddress (a2, b2) & "
-
Response.write "ค่าสุดท้าย:" & ""
Response.write "A2 =" & A2 & ""
Response.write "b2 =" & b2
-
'กระบวนการที่คล้ายกัน
-
Sub Test_value (Byval A, Byval B)
a = a + 1
b = b + 1
สิ้นสุดย่อย
Sub Test_address (Byref A, Byref B)
a = a + 1
b = b + 1
สิ้นสุดย่อย
'ในทำนองเดียวกันการผ่านอาร์เรย์วัตถุ (หรือเปลี่ยนค่าแอตทริบิวต์ในฟังก์ชัน)
'วัตถุสามารถใช้เป็นพารามิเตอร์
'อาร์เรย์ใช้ชื่ออาร์เรย์เป็นพารามิเตอร์
Redim Arytest (2,2)
สลัว intnum
ฟังก์ชั่น ary_test (byref a)
ary_test = ubound (ary_test, 2)
ฟังก์ชันสิ้นสุด
'เรียก
intnum = ary_test (intnum) 'ค่าคือ 3
-
ข้างต้นเป็นเรื่องเกี่ยวกับความแตกต่างระหว่าง Byval และ Byref ใน ASP ฉันเชื่อว่าคุณได้เรียนรู้เกี่ยวกับเรื่องนี้ สำหรับเนื้อหาที่เกี่ยวข้องเพิ่มเติมโปรดดำเนินการต่อเพื่อให้ความสนใจกับช่องทางเทคโนโลยีใหม่ที่ไม่ถูกต้อง