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