Generics ช่วยให้เราสามารถกำหนดคลาสที่มีตัวยึดตำแหน่งสำหรับประเภทของฟิลด์ เมธอด พารามิเตอร์ ฯลฯ Generics จะแทนที่ตัวยึดตำแหน่งเหล่านี้ด้วยประเภทเฉพาะบางประเภทในเวลารวบรวม ทั่วไปสามารถกำหนดได้โดยใช้วงเล็บมุม <> ข้อจำกัดหลักของการรวบรวมคือไม่มีการตรวจสอบประเภทที่มีประสิทธิภาพ ซึ่งหมายความว่าคุณสามารถใส่อ็อบเจ็กต์ใดๆ ลงในคอลเล็กชันได้ เนื่องจากคลาสทั้งหมดในภาษาการเขียนโปรแกรม C# ขยายจากคลาสพื้นฐานของอ็อบเจ็กต์
นอกจากนี้ เราไม่สามารถคืนค่า null จากวิธีทั่วไปเหมือนในวิธีปกติได้ ด้านล่างนี้คือข้อผิดพลาดที่วิธีการทั่วไปจะเกิดขึ้นหากเราพยายามคืนค่าเป็นโมฆะ
using System; namespace DemoApplication { class Program { public static void Main() { Add(5, 5); } public static T Add<T>(T parameter1, T parameter2) { return null; } } }
ดังนั้น ในการคืนค่า null หรือค่าดีฟอลต์จากวิธีทั่วไป เราสามารถใช้ default() ได้ default(T) จะคืนค่าออบเจ็กต์เริ่มต้นของประเภทที่มีให้
ตัวอย่าง
using System; namespace DemoApplication { class Program { public static void Main() { Add(5, 5); Console.ReadLine(); } public static T Add<T>(T parameter1, T parameter2) { var defaultVal = default(T); Console.WriteLine(defaultVal); return defaultVal; } } }
ผลลัพธ์
ผลลัพธ์ของรหัสคือ
0
ที่นี่เราจะเห็นว่ามีการส่งคืนค่าเริ่มต้นของจำนวนเต็ม 0