Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में जेनेरिक्स कैसे काम करते हैं, समझाएं


जेनेरिक्स C# के संस्करण 2.0 में जोड़े गए थे और भाषा में सबसे महत्वपूर्ण अवधारणाओं में से हैं। वे आपको पुन: प्रयोज्य, उच्च-प्रदर्शन कोड लिखने में सक्षम बनाते हैं जो कंपाइल टाइम पर टाइप-सेफ होता है। जेनेरिक्स का उपयोग करके, आप अपने कोड में किसी प्रकार का उपयोग कर सकते हैं बिना उसके बारे में पहले जाने।

जेनेरिक्स .NET में कई स्थानों पर उपयोग किए जाते हैं, जिनमें संग्रह, डेलीगेट्स, और एसिंक्रोनस कोड शामिल हैं। जेनेरिक्स के साथ, आपको संग्रह के आकार को पहले से जानने की आवश्यकता नहीं है, और आप किसी भी तत्व प्रकार के साथ जेनेरिक्स का उपयोग कर सकते हैं, यहां तक कि आपके कोड के लिए विशिष्ट कस्टम डेटा प्रकारों के साथ भी। C# जेनेरिक प्रकारों (क्लासेस, इंटरफेस, आदि) और जेनेरिक मेथड्स दोनों के लिए समर्थन प्रदान करता है।

जेनेरिक्स में, आपके पास टाइप पैरामीटर्स और टाइप आर्गुमेंट्स होते हैं। यह एक मेथड के समान है जिसमें पैरामीटर्स होते हैं, और आप मेथड को आर्गुमेंट्स पास करते हैं।

जेनेरिक प्रकार

एक जेनेरिक प्रकार घोषित करने का सिंटैक्स प्रकार के नाम के बाद कोण ब्रैकेट में टाइप पैरामीटर्स से मिलकर बनता है। उदाहरण के लिए, नीचे दिए गए उदाहरण में Locator<T> एक जेनेरिक क्लास है।

public class Locator<T> { }

Locator<T> का इंस्टेंस बनाने के लिए, आप new कीवर्ड का उपयोग करते हैं, उसके बाद क्लास का नाम। हालांकि, T के बजाय, आप वास्तविक प्रकार निर्दिष्ट करते हैं जिसे आप आर्गुमेंट के रूप में पास करना चाहते हैं। निम्न उदाहरण string प्रकार को आर्गुमेंट के रूप में पास करता है।

var stringLocator = new Locator<string>();

आप क्लास मेथड्स पर टाइप पैरामीटर (T) का उपयोग कर सकते हैं, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।

public class Locator<T>{    public IList<T> Items { get; set; }       public T Locate(int index){       return Items[index];    } } var stringLocator = new Locator<string>(); string item = stringLocator.Locate(2);

जेनेरिक्स का एक अतिरिक्त लाभ एडिटर द्वारा प्रदान किया गया IntelliSense है। जब आप Visual Studio या VS Code में stringLocator.Locate(4) टाइप करते हैं और मेथड नाम पर होवर करते हैं; यह आपको दिखाएगा कि यह T के बजाय string लौटाता है। यदि आप परिणाम को string के अलावा किसी अन्य प्रकार को असाइन करने का प्रयास करते हैं, तो कंपाइलर एक त्रुटि उठाएगा। उदाहरण के लिए,

// Error: Cannot implicitly convert type 'string' to 'int' [c-sharp]csharp(CS0029) int item = stringLocator.Locate(2);

एक जेनेरिक प्रकार टाइप पैरामीटर का उपयोग टाइप आर्गुमेंट के रूप में कर सकता है जब जेनेरिक बेस प्रकार या जेनेरिक इंटरफेस से इनहेरिट किया जाता है। जेनेरिक LinkedList<T> प्रकार जेनेरिक IEnumerable<T> इंटरफेस को लागू करता है, दूसरों के साथ।

public class LinkedList<T> : IEnumerable<T>

जेनेरिक मेथड्स

एक जेनेरिक मेथड केवल एक मेथड है जो एक टाइप पैरामीटर घोषित करता है जिसे आप मेथड के अंदर और पैरामीटर्स और रिटर्न प्रकार के रूप में उपयोग कर सकते हैं। नीचे दिए गए उदाहरण में, Swap<T> एक जेनेरिक मेथड है जो T प्रकार के दो पैरामीटर्स लेता है और T का एक इंस्टेंस लौटाता है।

public class Swapper{    public T Swap<T>(T first, T second){       T temp = first;       first = second;       second = temp;       return temp;    } }

जेनेरिक प्रकारों की तरह, जब आप एक जेनेरिक मेथड को इनवोक करते हैं, तो यह एक स्ट्रॉन्गली टाइप्ड वेरिएबल लौटाएगा।

var swapper = new Swapper(); int result = swapper.Swap<int>(5, 3);

एकाधिक जेनेरिक पैरामीटर्स होना संभव है। System.Collections.Generic नेमस्पेस में Dictionary क्लास में कुंजी और मान के लिए दो टाइप पैरामीटर्स हैं।

public class Dictionary<TKey, TValue>

अंत में, यह जानना महत्वपूर्ण है कि क्या जेनेरिक हो सकता है। प्रकारों के लिए, एनम को छोड़कर, सब कुछ जेनेरिक हो सकता है। इसमें शामिल हैं −

  • क्लासेस
  • स्ट्रक्स
  • इंटरफेस
  • डेलीगेट्स

प्रकार के सदस्यों के लिए, केवल मेथड्स और नेस्टेड प्रकार जेनेरिक हो सकते हैं। निम्न सदस्य जेनेरिक नहीं हो सकते −

  • फ़ील्ड्स
  • प्रॉपर्टीज
  • इंडेक्सर्स
  • कंस्ट्रक्टर्स
  • इवेंट्स
  • फाइनलाइज़र्स

उदाहरण

using System; using System.Collections.Generic; class Program{    static void Main(){       var stringLocator = new Locator<string>(){          Items = new string[] { "JavaScript", "CSharp", "Golang" }       };       string item = stringLocator.Locate(1);       Console.WriteLine(item); // CSharp       var swapper = new Swapper();       int a = 5, b = 3;       int result = swapper.Swap<int>(ref a, ref b);       Console.WriteLine($"a = {a}, b = {b}");    } } public class Locator<T>{    public IList<T> Items { get; set; }    public T Locate(int index){       return Items[index];    } } public class Swapper{    public T Swap<T>(ref T first, ref T second){       T temp = first;       first = second;       second = temp;       return temp;    } }

आउटपुट

CSharp a = 3, b = 5
  1. YouTube चैनल मेंबरशिप कैसे काम करती है? पूरी जानकारी YouTube चैनल मेंबरशिप कैसे काम करती है? पूरी जानकारी

    YouTube मेंबरशिप प्रशंसकों के लिए अपने पसंदीदा YouTube चैनल्स को सपोर्ट करने का एक तरीका है, ऑटोमेटेड मासिक दान के लिए प्रतिबद्ध होकर। मेंबरशिप YouTubers को वित्तीय सहायता प्रदान करती है और उन्हें फुल-टाइम वीडियो बनाने में मदद करती है। इसके अलावा, मेंबर्स को मेंबर-ओनली पोस्ट एक्सेस और YouTube लाइव च

  1. विंडोज 10 में फाइल टाइप कैसे बदलें विंडोज 10 में फाइल टाइप कैसे बदलें

    जब हम MP3, ZIP, या PDF जैसी फाइलों का उल्लेख करते हैं, तो हम फाइल टाइप (या फाइल एक्सटेंशन) का उल्लेख कर रहे हैं जो ऑपरेटिंग सिस्टम को यह पहचानने की अनुमति देता है कि यह किस प्रकार की फाइल है और इसे खोलने के लिए किस सॉफ्टवेयर की आवश्यकता है। इस तरह विंडोज या macOS यह निर्धारित कर सकता है कि MP3 फाइल

  1. पीसी पर NAT टाइप बदलने की स्टेप-बाय-स्टेप गाइड: तेज गेमिंग और स्ट्रीमिंग के लिए पीसी पर NAT टाइप बदलने की स्टेप-बाय-स्टेप गाइड: तेज गेमिंग और स्ट्रीमिंग के लिए

    पीसी पर NAT टाइप कैसे बदलें NAT क्या है? जबकि हर कोई नेट सर्फिंग का आनंद लेता है, केवल कुछ ही उन सैकड़ों प्रक्रियाओं के बारे में जानते हैं जो पृष्ठभूमि में चलती हैं जो इंटरनेट कनेक्शन को संभव बनाती हैं। ऐसी ही एक प्रक्रिया NAT है, जिसका मतलब नेटवर्क एड्रेस ट्रांसलेशन है और यह आपके इंटरनेट सेटअप का