Access Modifiers (Specifiers) ใน C# พร้อมตัวอย่างโปรแกรม
Access Modifier (ตัวระบุ) ใน C # คืออะไร
ตัวแก้ไขการเข้าถึง หรือ Access Specifiers ใน C# เป็นคำหลักที่ใช้ในการกำหนดการมองเห็นของคุณสมบัติคลาสหรือเมธอด ใช้เมื่อคุณไม่ต้องการให้โปรแกรมอื่นเห็นคุณสมบัติหรือเมธอดของคลาส ตัวแก้ไขการเข้าถึงจะจำกัดการเข้าถึงเพื่อให้โปรแกรมอื่นไม่สามารถมองเห็นคุณสมบัติหรือเมธอดของคลาสได้
ตัวแก้ไขการเข้าถึงมี 6 ประเภทใน C#:
- ส่วนตัว
- สาธารณะ
- มีการป้องกัน
- ภายใน
- ป้องกันภายใน
- ได้รับการคุ้มครองส่วนตัว
เราจะเรียนรู้เกี่ยวกับตัวแก้ไขการเข้าถึงหลักใน C# พร้อมตัวอย่างโปรแกรมตามที่อธิบายไว้ด้านล่าง
ตัวแก้ไขการเข้าถึงส่วนตัวใน C #
เมื่อแนบตัวแก้ไขการเข้าถึงส่วนตัวกับคุณสมบัติหรือวิธีการ หมายความว่าสมาชิกเหล่านั้นไม่สามารถเข้าถึงได้จากโปรแกรมภายนอกใดๆ
ตัวอย่างตัวแก้ไขการเข้าถึงส่วนตัว
ลองยกตัวอย่างและดูว่าเกิดอะไรขึ้นเมื่อเราใช้ตัวแก้ไขการเข้าถึงส่วนตัว
มาแก้ไขโค้ดปัจจุบันในไฟล์ Tutorial.cs ของเรากัน ในวิธี SetTutorial เราจะเปลี่ยนคำสำคัญสาธารณะเป็นส่วนตัว
ตอนนี้เรามาสลับไปใช้ไฟล์ Program.cs ของเรากันดีกว่า คุณจะสังเกตเห็นว่ามีเส้นหยักสีแดงอยู่ใต้วิธี SetTutorial
เนื่องจากเราได้ประกาศเมธอด SetTutorial เป็นแบบส่วนตัวในคลาส Tutorial แล้ว Visual Studio จึงตรวจพบสิ่งนี้ และได้แจ้งผู้ใช้โดยไฮไลต์ว่าเมธอดนี้จะใช้งานจากไฟล์ Program.cs ไม่ได้
ตัวดัดแปลงการเข้าถึงสาธารณะ C #
เมื่อแนบตัวแก้ไขการเข้าถึงแบบสาธารณะกับคุณสมบัติหรือวิธีการ หมายความว่าสมาชิกเหล่านั้นสามารถเข้าถึงได้จากโปรแกรมภายนอกใดๆ เราได้เห็นสิ่งนี้แล้วในตัวอย่างก่อนหน้านี้ของเรา
ตัวอย่างตัวแก้ไขการเข้าถึงสาธารณะ
เนื่องจากเราได้กำหนดวิธีการของเราเป็นแบบสาธารณะในคลาส Tutorial จึงสามารถเข้าถึงได้จากไฟล์ Program.cs
ตัวแก้ไขการเข้าถึงที่ได้รับการป้องกันใน C #
เมื่อตัวแก้ไขการเข้าถึงที่ได้รับการป้องกันถูกแนบไปกับคุณสมบัติหรือวิธีการ หมายความว่าสมาชิกเหล่านั้นสามารถเข้าถึงได้โดยเท่านั้น คลาสที่สืบทอดมา จากปัจจุบัน ชั้น- เราจะอธิบายรายละเอียดเพิ่มเติมในคลาส Inheritance
ตัวดัดแปลงการเข้าถึงภายใน C #
เมื่อมีการแนบตัวแก้ไขการเข้าถึงภายในกับคุณสมบัติหรือวิธีการ สมาชิกเหล่านั้นสามารถเข้าถึงได้โดยโปรแกรมภายในเท่านั้น แต่ไม่สามารถเข้าถึงได้โดยโปรแกรมภายนอก
ตัวสร้าง C#
C# ตัวสร้างใช้ในการเริ่มต้นค่าของฟิลด์คลาสเมื่อวัตถุที่เกี่ยวข้องถูกสร้างขึ้น Constructor คือ method ที่มีชื่อเดียวกับ class หากมีการกำหนด Constructor ในคลาส มันจะจัดเตรียมเมธอดแรกซึ่งจะถูกเรียกเมื่อสร้างอ็อบเจ็กต์ สมมติว่าเรามีคลาสที่เรียกว่า Employee วิธีการสร้างก็จะตั้งชื่อเป็น Employee()
สิ่งสำคัญต่อไปนี้จำเป็นต้องสังเกตเกี่ยวกับวิธีการสร้าง
- ตัวแก้ไขการเข้าถึงเริ่มต้นของ C# สำหรับตัวสร้างจำเป็นต้องทำให้เป็นสาธารณะ
- ไม่ควรมีประเภทการส่งคืนสำหรับวิธีคอนสตรัคเตอร์
ตัวอย่างของตัวสร้าง C#
ตอนนี้เรามาดูกันว่าเราจะรวมผู้ใช้ Constructor เข้ากับโค้ดของเราได้อย่างไร เราจะใช้ตัวสร้างเพื่อเริ่มต้นฟิลด์ TutorialID และ TutorialName เป็นค่าเริ่มต้นบางค่าเมื่อวัตถุถูกสร้างขึ้น
ขั้นตอน 1) ขั้นตอนแรกคือการสร้าง Constructor สำหรับคลาส Tutorial ของเรา ในขั้นตอนนี้ เราจะเพิ่มโค้ดด้านล่างลงในไฟล์ Tutorial.cs
คำอธิบายรหัส:-
- ก่อนอื่นเราเพิ่มวิธีการใหม่ซึ่งมีชื่อเดียวกันกับคลาส เนื่องจากเป็นชื่อเดียวกันกับคลาส C# จึงถือว่าสิ่งนี้เป็นเมธอดคอนสตรัคเตอร์ ดังนั้นเมื่อใดก็ตามที่เมธอดการเรียกสร้างอ็อบเจ็กต์ของคลาสนี้ เมธอดนี้จะถูกเรียกตามค่าเริ่มต้น
- ใน Tutorial Constructor เรากำลังตั้งค่าของ TutorialID เป็น 0 และ TutorialName เป็น "Default" ดังนั้นเมื่อใดก็ตามที่วัตถุถูกสร้างขึ้น ฟิลด์เหล่านี้จะมีค่าเริ่มต้นเหล่านี้เสมอ
ตอนนี้เรามาสลับไปที่ไฟล์ Program.cs ของเราแล้วลบบรรทัดซึ่งเรียกเมธอด SetTutorial ออก เนื่องจากเราต้องการเพียงดูว่า Constructor ทำงานอย่างไร
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public Tutorial() { TutorialID=0; TutorialName="Default"; } public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
คำอธิบายรหัส:-
- ขั้นตอนแรกคือการสร้างออบเจ็กต์สำหรับคลาส Tutorial ซึ่งทำได้โดยใช้คำสำคัญ 'ใหม่'
- เราใช้เมธอด GetTutorial ของคลาส Tutorial เพื่อรับค่า TutorialName จากนั้นจะแสดงค่านี้ไปยังคอนโซลผ่านเมธอด Console.WriteLine
หากป้อนโค้ดด้านบนถูกต้องแล้วและดำเนินการโปรแกรมจะแสดงผลลัพธ์ต่อไปนี้
Output:
จากผลลัพธ์ เราจะเห็นได้ว่า Constructor ถูกเรียกจริง ๆ และค่าของ TutorialName ถูกตั้งค่าเป็น "Default"
หมายเหตุ ที่นี่ค่า "ค่าเริ่มต้น" จะถูกดึงมาจากตัวสร้าง
สรุป
- C# Access Modifiers หรือ Access Specifiers ใช้เพื่อกำหนดการมองเห็นของคุณสมบัติคลาสหรือเมธอด
- เมื่อแนบตัวแก้ไขการเข้าถึงส่วนตัวกับคุณสมบัติหรือวิธีการ หมายความว่าสมาชิกเหล่านั้นไม่สามารถเข้าถึงได้จากโปรแกรมภายนอกใดๆ
- เมื่อแนบตัวแก้ไขการเข้าถึงแบบสาธารณะกับคุณสมบัติหรือวิธีการ หมายความว่าสมาชิกเหล่านั้นสามารถเข้าถึงได้จากโปรแกรมภายนอกใดๆ
- เมื่อมีการแนบตัวแก้ไขการเข้าถึงที่ได้รับการป้องกันกับคุณสมบัติหรือวิธีการ หมายความว่าสมาชิกเหล่านั้นสามารถเข้าถึงได้โดยคลาสที่สืบทอดมาจากคลาสปัจจุบันเท่านั้น
- เมื่อมีการแนบตัวแก้ไขการเข้าถึงภายในกับคุณสมบัติหรือวิธีการ สมาชิกเหล่านั้นสามารถเข้าถึงได้โดยโปรแกรมภายในเท่านั้น แต่ไม่สามารถเข้าถึงได้โดยโปรแกรมภายนอก
- ตัวสร้าง C# ใช้เพื่อเริ่มต้นค่าของฟิลด์คลาสเมื่อสร้างวัตถุที่เกี่ยวข้อง