อยากดูดวงฟรีๆ มาที่นี่ มหาหมอดูดอทคอม ดูดวงฟรี 24 ชั่วโมง



การส่งค่าพารามิเตอร์ให้กับโปรแกรมย่อย
กลับเมนูหลัก
 

:: การส่งค่าพารามิเตอร์ให้กับโปรแกรมย่อย
       1. การส่งค่าแบบส่งค่าไปอย่างเดียว (Pass By Value)
       เป็นการส่งค่าของตัวแปรไปอย่างเดียว เมื่อมีการแก้ไขค่านั้นๆ ในโปรแกรมย่อยที่รับคาเข้ามา จะไม่กระทบต่อค่าของตัวแปรเดียวกันในโปรแกรมหลัก ซึ่งใช้คำว่า ByVal หน้าพารามิเตร์ที่ส่ง เพื่อบอกว่าเป็นพารามิเตอร์แบบส่งค่าไปอย่างเดียว

Sub MySub (ByVal Z As Integer)
     Z = Z * 5
End Sub

       ถ้ามีการเรียกโปรแกรมย่อย MySub

Dim A As Integer
A = 9
MySub (A)

       2. การส่งค่าแบบอ้างอิง (Pass By Reference)
       การส่งค่าแบบอ้างอิง จะทำให้โปรแกรมย่อยที่ถูกเรียกใช้สามารถแก้ไขค่าของตัวแปรที่ส่งเป็นพารามิเตอร์นั้นได้

Sub MySub (ByRef Z As Integer)
     Z = Z * 5
End Sub

       ถ้ามีการเรียกโปรแกรมย่อย MySub

Dim A As Integer
A = 9
MySub(A)

       ตัวอย่างโปรแกรมแสดงการส่งพารามิเตอร์ให้กับโปรแกรมย่อย
       ขั้นตอนการสร้างโปรแกรม
       1. เลือกโปรเจ็กต์ชนิด Windows Application แล้ววางคอนโทรลบนฟอร์มและกำหนดคุณสมบัติของฟอร์มและคอนโทรลต่างๆ

ชนิดของคอนโทรล
คุณสมบัต
ค่าที่กำหนดให้
Form  Text Form1
Name Form1
Command Button  Text &Show result
Name Button1

       2. ใส่คำสั่งโปรแกรมลงไปใน Code Editor

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   Dim A As Integer
   A = 100
   PassByValue(A)
   Console.WriteLine("Pass By Value Result = " & Str(A))
   A = 100
   PassByReference(A)
   Console.WriteLine("Pass By reference Result = " & Str(A))
End Sub

Sub PassByValue(ByVal A As Integer)
   A = 2 * A
End Sub

Sub PassByReference(ByRef A As Integer)
   A = 2 * A
End Sub

       3. รันโปรแกรม จะได้ผลลัพธ์การทำงานดังรูป
       เมื่อ Click mouse
       * ค่าที่ได้จากการส่งค่าอย่างเดียว : Pass By Value Result = 100
       * ค่าที่ได้จากการส่งค่าแบบอ้างอิง : Pass By reference Result = 200

:: การใช้งานพารามิเตอร์แบบ Optional
       
การส่งพารามิเตอร์ให้กับโปรแกรมย่อย เมื่อต้องการให้โปรแกรมย่อยรับค่าพารามิเตอร์เพียงบางตัว ค่าพารามิเตอร์ที่ไม่ได้ส่งไป จะต้องกำหนดค่าดีฟอลต์ เพราะโปรแกรมย่อยจะนำค่าดีฟอลต์ที่ถูกกำหนดมาเป็นค่าพารามิเตอร์แทน

Sub MySub(Optional X As Integer = 1, Optional Y As Integer = 1)
     ' ชุดคำสั่ง
End Sub

       การเรียกใช้งานโปรแกรมย่อย เราไม่จำเป็นต้องส่งพารามิเตอร์ครบทั้ง 2 ตัว แต่สามารถส่งพารามิเตอร์เพียงบางตัวได้
       ค่าพารามิเตอร์ X เท่ากับค่าของ A และพารามิเตอร์ Y เท่ากับค่าดีฟอลต์คือ 1

Dim A As Integer
MySub(A)

       สำหรับตัวแปรแบบ Optional จะต้องกำหนดค่าดีฟอลต์ ซึ่งเป็นค่าที่กำหนดให้โดยปริยาย เมื่อไม่มีการส่งพารามิเตอร์ตัวนั้นไป
       จากตัวอย่าง ถ้ามีการเรียกใช้โปรแกรมย่อย โดยที่ไม่ส่งค่าของพารามิเตอร์ X โปรแกรมจะถือว่าพารามิเตอร์ X มีค่าเท่ากับ 2

Sub MySub(Optional X As Integer = 2, Optional Y As Integer = 3)
     ' ชุดคำสั่ง
End Sub

       เมื่อมีการใช้พารามิเตอร์แบบ Optional หลายตัวในโปรแกรมเดียวกัน จะต้องระบุค่าที่ส่งให้กับโปรแกรมย่อยว่า ถูกนำไปใช้เป็นค่าของพารามิเตอร์ตัวใดด้วยการใช้ข้อความ

<ชื่อพารามิเตอร์> : = <ค่าที่จะส่งไป>

       ตัวย่างการเรียกใช้โปรแกรมย่อยแบบกำหนดว่าจะส่งค่าให้กับพารามิเตอร์ใด

MySub X:=1, Y:=2    
MySub Y:=3           

       1 : ' การส่งค่า 1 ให้พารามิเตอร์ X ส่งค่า 2 ให้พารามิเตอร์ Y
       2 : ' การส่งค่า 3 ให้พารามิเตอร์ Y แต่ไม่ส่งค่า X

:: การส่งพารามิเตอร์แบบไม่จำกัดจำนวน
       คำสั่ง ParamArray สามารถใช้รับพารามิเตอร์แบบไม่จำกัดจำนวนได้ จากตัวอย่าง

Function Sum(ByVal ParamArray IntNums())
   Dim a As Object, c As Integer
   For Each a In IntNums
       c = c + a
   Next
   Sum = c
End Function

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Console.WriteLine(Sum(4, 5, 7, 9, 10))
   Console.WriteLine(Sum(4, 5, 7, 9, 10, 7))
End Sub

       ผลลัพธ์ของโปรแกรมจะได้
       35 : เกิดจาก 4+5+7+9+10
       42 : เกิดจาก 4+5+7+9+10+7

 
 
กลับเมนูหลัก