जेनेरिक्स हमें प्लेसहोल्डर्स के साथ एक क्लास को परिभाषित करने की अनुमति देते हैं जो उसके फील्ड्स, मेथड्स, पैरामीटर्स आदि के टाइप के लिए होते हैं। जेनेरिक्स कंपाइल टाइम पर इन प्लेसहोल्डर्स को किसी विशिष्ट टाइप से बदल देते हैं। एक जेनेरिक को एंगल ब्रैकेट्स <> का उपयोग करके परिभाषित किया जा सकता है। कलेक्शन की एक प्राथमिक सीमा प्रभावी टाइप चेकिंग की अनुपस्थिति है। इसका अर्थ है कि आप किसी कलेक्शन में कोई भी ऑब्जेक्ट डाल सकते हैं क्योंकि C# प्रोग्रामिंग लैंग्वेज में सभी क्लासेस ऑब्जेक्ट बेस क्लास से एक्सटेंड होती हैं।
साथ ही, हम एक सामान्य मेथड की तरह जेनेरिक मेथड से केवल null नहीं लौटा सकते। नीचे वह त्रुटि है जो एक जेनेरिक मेथड फेंकेगा यदि हम null लौटाने का प्रयास कर रहे हैं।
using System;
namespace DemoApplication
{
class Program
{
public static void Main()
{
Add(5, 5);
}
public static T Add(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 parameter1, T parameter2)
{
var defaultVal = default(T);
Console.WriteLine(defaultVal);
return defaultVal;
}
}
}
आउटपुट
0
यहां हम देख सकते हैं कि इंटीजर का डिफ़ॉल्ट मान 0 लौटाया गया है।