[Tutorial] สอนภาษา .Net :: ตอนที่ 04 ตัวอย่างการใช้โครงสร้างและเรื่องจุดอ้างอิงแบบไร้ชื่อ

เงื่อนข้อตกลงในการใช้บทความนี้

หลังจากที่เราได้ศึกษาในเชิงทฤษฏีเรื่องโครงสร้างกันไปในตอนที่ 3 บ้างแล้ว ทีนี้ก็ถึงคิวการลงมือทำกันบ้าง
เริ่มต้นด้วยเปิดโปรแกรม Visual Studio แล้วสร้างโปรเจค Console Application ขึ้นมา ตั้งชื่อตามสะดวกเช่นเคยครับครับ


เริ่มจากโครงสร้างง่ายๆ ก่อนซึ่งผมจะขอเริ่มจากโครงสร้างรายละเอียดพนักงาน (สร้างด้านล่างบรรทัด End Module แล้วนะครับ)

Class Employee

End Class

*ขั้นตอนนับจากนี้จะเขียนภายใน Class Employee นะครับ เพราะเราต้องการใช้เป็นส่วนหนึ่งของโครงสร้าง Employee*


ซึ่งทั่วไปจะต้องมีข้อมูล 2 ประการได้แต่ชื่อและหมายเลข ซึ่งเราจะทำการสร้างจุดอ้างอิงขึ้นมา
แต่ทั้งนี้ผมจะจำกัดการเข้าถึงด้วยการใช้ Keyword ว่า Private เพื่อระบุว่าจุดอ้างอิงนี้ไม่อนุญาตให้เรียกใช้ได้โดยทั่วไป

Private _ID As Integer, _Name As String

*สังเกตุว่าผมจะระบุโครงสร้างที่ต้องการในแต่ละจุดอ้างอิงด้วย Keyword ว่า As ซึ่งตรงนี้เราจำเป็นต้องระบุโครงสร้างที่ต้องการนะครับ
ถ้าไม่ระบุ โปรแกรมเขียนเราจะใช้โครงสร้าง Object ให้แทน*



แต่เมื่อเราจำกัดการเข้าถึงจุดอ้างอิงแล้ว เราก็ต้องเปิดช่องให้ทำการใส่ค่าเข้าไปได้
ซึ่งผมจะใช้ Constructor Method ในการนี้

    Public Sub New(ID As Integer, Name As String)
        _ID = ID
        _Name = Name
    End Sub

จุดอ้างอิงในวงเล็บนั้นมีชื่อเรียกว่า Argument เป็นจุดอ้างอิงที่เราจะส่งค่าเข้ามาใน Method
ซึ่งจุดอ้างอิงนี้จะถูกทำลายไปพร้อมๆ กับ Local Variant เมื่อ Method สิ้นสุด
ถ้าใครงงๆ จะเรียกเล่นๆ ว่า Import Variant (จุดอ้างอิงนำเข้า/ตัวแปรนำเข้า)ก็ได้ครับ


วิธีการใช้งาน Constructor Method นั้นก็เรียบง่ายครับ เพราะเราจะใช้ตอนสร้างตัวโครงสร้างนั่นเองเช่น

Dim Example As New Employee(123, "MyName")

หรือจะเขียนแบบเดิมก็ได้ครับ ไม่ต่างกันแล้วแต่ถนัด
Dim Example = New Employee(123, "MyName")


ทีนี้เราจะมาลองสร้าง Instance Method กันบ้าง
สมมุติว่าพนักงานเกิดเปลี่ยนชื่อขึ้นมาซึ่งเราก็ต้องอัพเดตข้อมูลของโปรแกรมด้วย

    Public Sub ChangeName(NewName As String)
        _Name = NewName
    End Sub

สังเกตุว่าผมจะใช้ Keywords ว่า Public เพื่อระบุว่า Method ไม่คืนค่านี้สามารถเข้าถึงได้โดยทั่วไป
ซึ่งตรงกันข้ามกับ Private นั่นเองครับ (Keyword ใน VB.Net ส่วนใหญ่จะความหมายตรงตัว เรียกได้ว่าเปิดดิกชันนารีได้เลยครับถ้างง)


จากนั้นผมก็จะสร้าง Method สำหรับแสดงค่าในโครงสร้าง Employee ของเรา
ซึ่งคราวนี้ผมจะใช้ Static Method บ้างละครับ

    Public Shared Sub Show(Empolyee As Employee)
        System.Console.WriteLine(Empolyee._ID & ":" + Empolyee._Name)
    End Sub

Keyword ที่ใช้ในการระบุว่าเป็น Static นั้น Vb.net นั้นก็คือ Shared นั่นเองครับ(ใช้กับจุดอ้างอิงได้ด้วยนะครับ Keyword นี้)
ทั้งนี้จะสังเกตุได้ว่าในโค๊ดนั้นผมจะไม่ใช้ _ID หรือ _Name เฉยๆ เพราะ Static Method นั้นไม่ได้ผูกติดกับตัวโครงสร้าง
ดังนี้ผมจำเป็นต้องใช้จุดอ้างอิงนำเข้าตัวโครงสร้างเองเข้ามามาก่อนจากนั้นจึงจะสามารถเรียกใช้จุดอ้างอิงเหล่านั้นผ่านโครงสร้างได้


เรามาดูรูปร่างหน้าตาของโครงสร้าง Employee กันเต็มๆ ครับ การเขียนโค๊ดภายในโครงสร้าง Employee จบลงเท่านี้





ทีนี้เรามาเขียนโค๊ดภายในโครงสร้าง Module1 กันบ้าง ซึ่งเราจะเริ่มเขียนกันภายใน Method ชื่อ Main กันนะครับ
เริ่มจากการสร้างตัวโครงสร้าง Employee ขึ้นมา
Dim Employee As New Employee(404, "Hero doi")

จากนั้นผมก็ทดสอบให้แสดงค่าดูว่าถูกต้องหรือไม่
Employee.Show(Employee)

ว่าแล้วก็ทดสอบเปลี่ยนชื่อพนักงานดูแล้วสั่งให้แสดงค่าดูอีกทีหนึ่ง
Employee.ChangeName("Zhuge Liang")
Employee.Show(Employee)

แน่นอนว่าต้องไม่ลืมสั่งให้โปรแกรมหยุดรอแสดงผลให้เราดูด้วย
System.Console.ReadKey()

โคีดก็จะออกมาแบบนี้ครับ


ทดสอบกดปุ่ม Start ดู ได้ผลเหมือนกันไหมครับ






ทีนี้เราจะมาลองสร้างจุดอ้างอิงไร้ชื่อกันดูบ้าง แต่ก่อนอื่นเราจะกลับไปที่โครงสร้าง Employee กันก่อน
ผมจะทำการแก้ไข Method ชื่อ ToString ซะใหม่ให้ส่งค่าใน Employee เป็นข้อความกลับ
    Public Overrides Function ToString() As String
        Return _ID & ":" + _Name
    End Function

Keyword ทีใช้ระบุว่าเราจะทำการแก้ไข Method นั้นก็คือ Overrides นั่นเองครับ
แต่ทั้งนี้ตัว Method นั้นๆ ต้องอนุญาตให้แก้ไขได้ด้วยนะครับ
ซึ่ง Keyword ที่ใช้ในการอนุญาตนั้นก็คือ Overridable นั่นเองครับ





เรียบร้อยแล้วเรากลับมาใน Sub Main กันต่อ
วิธีสร้างจุดอ้างอิงไร้ชื่อนั้นเราก็จะใช้ Statement ชื่อว่า With นั่นเองครับ
*Statement คือบล๊อกคำสั่งที่มีช่วงการใช้งานเริ่มต้นด้วยชื่อ Statement นั้นๆ
และลงท้ายด้วย End พร้อมชื่อบล๊อกนั้น ซึ่งตัวบล๊อกนั้นจะอยู่ภายใน Method เท่านั้น*

ลักษณะของบล๊อก With จะเป็นดังนี้ครับ
With จุดอ้างอิง

End With

ซึ่งเราสามารถอ้างอิงตัวโครงสร้างที่ถูกสร้างขึ้นมาได้โดยตรงเลยดังนี้
With New Employee(191, "Hero doi")

End With


ทดสอบ Method ใช้งานที่เราแก้ไขกันดูก่อน
ซึ่ง ToString นั้นจะทำการส่งค่าเป็นข้อความกลับเฉยๆ
ดังนี้ผมจึงจำเป็นต้องใช้
System.Console.WriteLine เพื่อแสดงผลออกมา
        With New Employee(191, "Hero doi")
         System.Console.WriteLine(.ToString)
        End With

สังเกตุว่าผมใช้แค่ .ToString แค่นั้นเพื่ออ้างอิงถึงตัวโครงสร้าง


มาลองเปลี่ยนชื่อพนักงานกันอีกรอบครับ
        With New Employee(191, "Hero doi")
         System.Console.WriteLine(.ToString)

         .ChangeName("Leech King")
         System.Console.WriteLine(.ToString)
        End With
จะเห็นว่าผมใช้แค่ .ChangeName("Leech King") เพียงเท่านั้นเช่นเคย

*จุดอ้างอิงแบบไร้ชื่อนี้จะสามารถใช้งานได้ภายในบล๊อก With เท่านั้นนะครับ นอกบล๊อกไปจะใช้ไม่ได้*





มาลองทดสอบ Start โปรแกรมกันดูครับ


คำแนะนำเพิ่มเติม


การใช้จุดอ้างอิงไร้ชื่อนั้นเหมาะสำหรับการจำกัดการใช้งานจุดอ้างอิงเพื่อให้สะดวกในการตรวจสอบภายหลัง
ซึ่งทำให้เรามั่นใจได้ว่า จุดอ้างอิงนั้นๆ มีการใช้งานแค่ในบล๊อก ไม่ต้องตรวจนอกเหนือจากบล๊อกนั้นๆ
หากมีข้อผิดพลาดใดๆ ที่เกี่ยวเนื่องกับจุดอ้างอิงนั้นๆ


หากบทความนี้ถูกใจ เป็นประโยชน์ ขอรบกวนผู้อ่านกด [+] ด้วยนะครับ ขอบคุณครับ พาพันขอบคุณ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่