C# การใช้คำสั่งและการสอน C# Virtual Method พร้อมตัวอย่าง

บทช่วยสอนเชิงลึกนี้อธิบายทั้งหมดเกี่ยวกับ C# โดยใช้คำสั่งและวิธีการเสมือนจริง คุณจะได้เรียนรู้ความแตกต่างระหว่างวิธีการแบบนามธรรมและแบบเสมือน:

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

.Net Framework นำเสนอวิธีต่างๆ ในการจัดการทรัพยากรสำหรับวัตถุโดยใช้ตัวรวบรวมขยะ หมายความว่าคุณไม่จำเป็นต้องจัดสรรและลบวัตถุหน่วยความจำอย่างชัดเจน การดำเนินการทำความสะอาดสำหรับวัตถุที่ไม่มีการจัดการใด ๆ จะได้รับการจัดการโดยใช้ตัวทำลาย

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

เพื่อให้บรรลุการทำลายวัตถุโดยอัตโนมัติ C# เสนอวิธีกำจัดที่สามารถเรียกได้เมื่อไม่ต้องการวัตถุอีกต่อไป การใช้คำสั่งใน C# กำหนดขอบเขตเงื่อนไขสำหรับการมีอยู่ของวัตถุ เมื่อลำดับการดำเนินการออกจากขอบเขตการใช้งาน .Net framework จะรู้ว่าถึงเวลาที่จะทำลายวัตถุนั้นแล้ว

การใช้ C# Statement

Implement IDisposable Interface For Use

The การใช้คำสั่ง C# ช่วยให้โปรแกรมเมอร์ใช้ทรัพยากรหลายอย่างในคำสั่งเดียว ออบเจกต์ทั้งหมดที่กำหนดไว้ภายในบล็อกโค้ดที่ใช้ควรใช้อินเทอร์เฟซ IDisposable และสิ่งนี้ทำให้เฟรมเวิร์กสามารถเรียกใช้การกำจัดเมธอดสำหรับวัตถุที่ระบุภายในคำสั่งเมื่อออก

ตัวอย่าง

การใช้คำสั่งสามารถรวมกับประเภทที่สามารถใช้ IDisposable เช่น StreamWriter, StreamReader เป็นต้น .

มาดูโปรแกรมง่ายๆ กัน:

 public class Program { public static void Main(string[] args) { using (SysObj so = new SysObj()) { Console.WriteLine("Inside using statement"); } Console.WriteLine("Outside of the using statement block"); } } class SysObj : IDisposable { public void Dispose() { Console.WriteLine("Dispose method"); } } 

เอาต์พุต

เอาต์พุตของรายการข้างต้น โปรแกรม:

ภายในโดยใช้คำสั่ง

วิธีกำจัด

ภายนอกบล็อกคำสั่งการใช้

คำอธิบาย

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

จากนั้นโค้ดจะออกจากบล็อกคำสั่งและพิมพ์คำสั่งภายนอกไปยังคอนโซล

C# Virtual วิธีการ

วิธีการเสมือนจริงคืออะไร?

เมธอดเสมือนเป็นเมธอดคลาสที่มีฟังก์ชันการทำงานให้กับโปรแกรมเมอร์เพื่อแทนที่เมธอดในคลาสที่ได้รับซึ่งมีลายเซ็นเดียวกัน เมธอดเสมือนส่วนใหญ่จะใช้เพื่อแสดงความหลากหลายในสภาพแวดล้อม OOPs

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

เมธอดเสมือนจะถูกสร้างขึ้นในคลาสพื้นฐานก่อน จากนั้นจึงสร้างเมธอดเสมือนถูกแทนที่ในคลาสที่ได้รับ สามารถสร้างเมธอดเสมือนในคลาสพื้นฐานได้โดยใช้คีย์เวิร์ด "virtual" และเมธอดเดียวกันนี้สามารถแทนที่ในคลาสที่ได้รับมาโดยใช้คีย์เวิร์ด "override"

วิธีการเสมือน: ข้อควรจำ

  • เมธอดเสมือนในคลาสที่ได้รับจะมีคีย์เวิร์ดเสมือน และวิธีการในคลาสที่ได้รับควรมีคีย์เวิร์ดแทนที่
  • หากเมธอดถูกประกาศเป็นเมธอดเสมือนในคลาสพื้นฐาน ดังนั้นคลาสที่ได้รับไม่จำเป็นต้องแทนที่เมธอดนั้นเสมอไป เช่น เป็นทางเลือกที่จะแทนที่เมธอดเสมือนในคลาสที่ได้รับ
  • หากเมธอดมีคำจำกัดความเหมือนกันทั้งในคลาสฐานและคลาสที่ได้รับ แสดงว่าไม่ใช่ จำเป็นต้องแทนที่เมธอด จำเป็นต้องใช้การแทนที่ก็ต่อเมื่อทั้งสองมีคำจำกัดความต่างกัน
  • วิธีการแทนที่ช่วยให้เราสามารถใช้รูปแบบมากกว่าหนึ่งรูปแบบสำหรับวิธีการเดียวกัน ดังนั้นจึงแสดงความหลากหลายด้วย
  • วิธีการทั้งหมดไม่ใช่ -virtual ตามค่าเริ่มต้น
  • ตัวปรับแต่งเสมือนไม่สามารถใช้ร่วมกับตัวปรับแต่งส่วนตัว แบบคงที่ หรือนามธรรมได้

การใช้คำหลักเสมือนใน C# คืออะไร?

คีย์เวิร์ดเสมือนใน C# ใช้เพื่อแทนที่สมาชิกคลาสพื้นฐานในคลาสที่ได้รับมาตามความต้องการ

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

ความแตกต่างระหว่างเมธอดนามธรรมกับเมธอดเสมือน

เมธอดเสมือนประกอบด้วยการใช้งานและอนุญาตให้คลาสที่ได้รับมาแทนที่ ในขณะที่เมธอดนามธรรมไม่มีการใช้งานใด ๆ และบังคับให้ โปรแกรมเมอร์จะเขียนเมธอดแทนที่ในคลาสที่ได้รับมา

ดังนั้น กล่าวง่ายๆ ก็คือ เมธอดนามธรรมไม่มีรหัสใดๆ อยู่ภายใน ในขณะที่เมธอดเสมือนมีการใช้งานของตัวเอง

ความแตกต่างระหว่าง เสมือนและแทนที่ใน C#

คำหลักเสมือนมักจะตามด้วยลายเซ็นของเมธอด คุณสมบัติ ฯลฯ และอนุญาตให้แทนที่ในคลาสที่ได้รับ คำสำคัญแทนที่ใช้ในคลาสที่ได้รับด้วยลายเซ็นเมธอด/คุณสมบัติเดียวกันกับในคลาสพื้นฐานเพื่อให้ได้การแทนที่ในคลาสที่ได้รับ

จำเป็นต้องแทนที่เมธอดเสมือนใน C# หรือไม่

คอมไพเลอร์จะไม่บังคับให้โปรแกรมเมอร์แทนที่เมธอดเสมือน คลาสที่ได้รับไม่จำเป็นต้องแทนที่เมธอดเสมือนเสมอไป

ตัวอย่าง

มาดูตัวอย่างเพื่อให้เข้าใจชัดเจนยิ่งขึ้นเกี่ยวกับเมธอดเสมือน

ในตัวอย่างนี้ เราจะใช้เมธอดที่แตกต่างกันสองเมธอดในคลาสฐาน วิธีแรกคือเมธอดที่ไม่ใช่เวอร์ช่วล และอีกเมธอดเป็นเมธอดเสมือนที่มีคีย์เวิร์ดเสมือน วิธีการทั้งสองนี้จะถูกแทนที่ในคลาสที่ได้รับ

ให้เรามีดู:

โปรแกรม

 using System; public class Program { public static void Main(string[] args) { calculate calc = new calculate (); numbers nmbr = calc; calc.addition(); nmbr.addition(); calc.subtraction(); nmbr.subtraction(); } } public class numbers { public void addition(){ Console.WriteLine("This is addition method"); } public virtual void subtraction(){ Console.WriteLine("This is subtraction method"); } } public class calculate : numbers { public void addition(){ Console.WriteLine("This is addition method in the derived class"); } public override void subtraction(){ Console.WriteLine("This is subtraction method override in derived class"); } }

เอาต์พุต

เอาต์พุตของโปรแกรมด้านบนคือ:

นี่คือวิธีการบวกในคลาสที่ได้รับมา

นี่คือวิธีการเพิ่มเติม

นี่คือวิธีการลบที่แทนที่ในคลาสที่ได้รับมา

นี่คือวิธีการลบ แทนที่ในคลาสที่ได้มา

คำอธิบาย

ในตัวอย่างข้างต้น เรามีสองคลาส ได้แก่ Number และ Calculate หมายเลขคลาสฐานมีสองวิธี ได้แก่ การบวกและการลบ โดยที่การบวกเป็นวิธีที่ไม่เสมือนจริง และการลบเป็นวิธีเสมือน ดังนั้น เมื่อเรารันโปรแกรมนี้ วิธีการเสมือนของคลาสพื้นฐาน "การบวก" จะถูกแทนที่ในคลาสที่ได้รับมา การคำนวณ

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

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

สรุป

คำสั่งการใช้ใน C# ส่วนใหญ่จะใช้สำหรับการจัดการทรัพยากร คำสั่ง using กำหนดขอบเขตเงื่อนไขสำหรับการมีอยู่ของออบเจ็กต์

เมื่อการดำเนินการย้ายออกจากบล็อกคำสั่ง มันจะบอกให้เฟรมเวิร์กทำลายออบเจกต์ใดๆ ที่สร้างขึ้นภายในบล็อกคำสั่ง รหัสที่กำหนดไว้ภายในคำสั่งควรใช้อินเทอร์เฟซ IDisposable เพื่อให้ .Net framework เรียกวิธีกำจัดสำหรับวัตถุที่กำหนดไว้

วิธีการเสมือนช่วยให้ผู้ใช้สามารถแทนที่วิธีการในคลาสที่ได้รับซึ่งมี ลายเซ็นเดียวกับเมธอดในคลาสพื้นฐาน เมธอดเสมือนสามารถใช้เพื่อให้ได้ความหลากหลายในภาษาโปรแกรมเชิงวัตถุ

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

เลื่อนขึ้นไปด้านบน