हेल्लो दोस्तों ! आज के इस पोस्ट में आपको c# generic in hindi के बारे में आपको बताया जा रहा है की क्या होता है कैसे काम करता है तो चलिए शुरू करते है
C# generics का परिचय
generics को c# language और CLR(common language runtime) के version 2.0 में introduce किया गया था यदि आपने c++ में templates के बारे में पढ़ा हुए है तो आप c# के इस feature को आप आसानी से समझ और उपयोग कर पाएंगे की हलाकि generics और templates same नहीं है लेकिन दोनों का purpose same ही होता है
generics के माध्यम से ऐसी classes ,interface ,methods ,array और delegates को डिफाइन किये जा सकते है जो किसी भी टाइप से independent होते है या फिर सभी टाइप के data के साथ work कर सकते है
example के लिए यदि निचे दिए जा रहे method को देखिये की यह method दो integer को numbers को add करता है
public int add(int a,int b) { return a+b; }
इस method के साथ आप problem ये है की आप इस method से float या double numbers को नहीं add कर सकते है इससे सिर्फ integer numbers ही add कर सकते है इससे सिर्फ integer numbers ही add किये जा सकते है लेकिन इस method का generic version को create करके आप उससे सभी type के numbers को add कर सकते है
generics से पहले यदि किसी code को किसी दुसरे टाइप के लीये reuse करना होता था तो इसके लिए आप एक टाइप से दुसरे type में casting करनी होती थी यदि casting नहीं की जाती थी तो हर टाइप के लिए same code को अलग से लिखना होता था यह एक समस्या थी क्योकि इससे code की size भी बढ़ जाती थी और एप्लीकेशन की performance भी कम हो जाती थी
लेकिन जब आप एक generic code को लिखते है तो न तो आपको casting करने की आवश्यकता होती है और न ही हर टाइप के लिए अलग से code लिखने की आवश्यकता होती है क्योकि generic code सभी टाइप के साथ work कर सकते है
generics के कुछ benifits आपको निचे दिया जा रहा है
- जैसा की आपको पता है की एक generic code को किसी भी टाइप के लिए प्रयोग किया जा सकता है इसलिए हर type के लिए अलग code लिखने की बजाय एक ही code को बार बार reuse किया जा सकता है इससे code reusability बढती है
- जब आप generics को प्रयोग करते है तो आपको casting और boxing जैसी processing करने की आवश्यकता नहीं होता है इससे आपकी एप्लीकेशन की performance बढती है
- generic code को सिर्फ कुछ special types के साथ work करने के लिए भी create किया जा सकता है ऐसे में आप आसानी से execution को कण्ट्रोल कर पाते है
generic type parameters
generics के द्वारा आप .net framework में type parameters(int,float,class,delegate,event आदि में types को parameter के रूप में प्रयोग करना ) के concept को introduce किया गया है
जब आप कोई generic code को डिफाइन करते है तो generics type parameter को भी डिफाइन करते है generics टाइप parameters के द्वारा ही उस type को accept किया जाता है जिस type के लिए आप generics code का प्रयोग करना चाहते है
generics type parameter किसी भी type के लिए एक placeholder होता है वह टाइप user के द्वारा तब डिफाइन किया जाता है जब वे generics code को किसी टाइप के लिए प्रयोग करना चाहते है
example के लिए यदि add() method के generic version से आप float numbers को add करना चाहते है तो इसके लिए आप float को generic टाइप argument की तरह pass करेंगे इसी प्रकार यदि integer numbers को add करेंगे तो integer को generic type argument के रूप में pass किया जायेगा
एक generic code को आप directly प्रयोग नहीं कर सकते है क्योकि असल में generic code को कोई real code नहीं होता है generics code का प्रयोग करने के लिए आपको एक type (int,float,class,interface,delegate आदि) में argument के रूप में pass करना होता है
आपके द्वारा pass किये गए type run time के दौरान generic टाइप को parameter को replace कर देता है generic type को सिर्फ एक blue print होता है जो उसी टाइप के अनुसार work करता है जो टाइप उसे pass किया गए है
generics type parameter को angular brackets(<>) में डिफाइन किया जाता है हलाकि आप generics टाइप के parameters के रूप में कोई भी नाम का प्रयोग कर सकते है लेकिन इसके लिए निचे आपको कुछ guildelines दी जा रही है जिन्हें आपको follow करना चाहिए
- generic type को parameter के रूप में आप एक लम्बा नाम का प्रयोग कर सकते है लेकिन यदि single letter का नाम काफी हो तो आपको उसे ही प्रयोग करना चाहिए
- यदि आप एक single letter को generic type parameter के रूप में प्रयोग कर रहे है तो आपको T letter का प्रयोग करना चाहिए T एक general naming convention जो industry में सभी के द्वारा follow किया जाता है T से programmer को समझने में भी आसानी होती है की argument के रूप में एक type को pass किया जाता है
- यदि आप कोई लम्बा नाम प्रयोग करना चाहते है तो उससे पहले T को prefix कर सकते है ऐसे करने से आसानी से समझने में सहूलियत होती है
एक बात आपको हमेशा ध्यान में रखना चाहिए की जब आप generic type parameter को angular brackets के साथ प्रयोग करते है तो वह compiler को यह बताता है की वह type या method एक generic type या method है लेकिन उस method के अन्दर यदि आप generic type का कोई field को create करते है तो उसके लिए आप बिना angular brackets के ही generics type parameter को डिफाइन करते है
generic classes
एक generic class में ऐसे operations(methods) को डिफाइन किया जा सकता है जो किसी एक type से सम्बंधित नहीं है generic class का प्रयोग आप linked lists ,hash tables ,stacks,queue,tree आदि में collections (data structure) को डिफाइन करने के लिए कर सकते है
क्योकि collections में सभी operations एक ही तरह से परफॉर्म किये जाते है चाहे की कोई सा भी type का प्रयोग किया जाए .NET framework library में सभी collection classes के generic versions भी available है जो उनके non generic versions से अधिक का प्रयोग किये जाते है
c# generic class को डिफाइन करने का general syntax आपको निचे दिया जा रहा है
class-keyword class-name <generic-type-parameter> { //define some methods and fields with <generic-type-parameter> }
जैसे की आप उपर दिए गए syntax में आप देख सकते है की एक generic class का syntax भी किसी normal class की तरह ही होता है लेकिन generic class को डिफाइन करते समय class के नाम के बाद आप generic type parameter भी डिफाइन करते है
इसके आलावा आप class के अन्दर भी methods को और फ़ील्ड्स को डिफाइन करते है उन सबसे type के रूप में आप generic type parameter ही डिफाइन कर सकते है लेकीन सभी methods और फ़ील्ड्स को generic type parameter के साथ ही डिफाइन करना आवश्यक नहीं है साथ ही जब आप class का object को create करते है तब भी class के नाम के बाद generic type parameter को डिफाइन करते है
c# में generic classes का प्रयोग को निचे आपको example के द्वारा समझ सकते है
using System; class genericDemo<T> { T value; Public genericDemo(T v) { This.value=v; } Public void display() { Console.WriteLine(this.value); } } Class genericDemofinal { Static void Main(string[] args) { genericDemo<int>gdl=new genericDemo<int>(2); gdl.display(); genericDemo<stirng>gdS=new genericDemo<string>(“hello”); gdS.display(); } }
उपर दिए गए example के आपको इसका आउटपुट निचे दिया जा रहा है
2 Hello
generic delegates
c# में generic delegates को declare करने का general syntax आपको निचे दिया जा रहा है
delegate-keyword type-parameter delegate-name <type-parameter>(type-parameter a,type-parameter b….);
delegate के नाम के बाद में generic type के parameter angular brackets में डिफाइन किया जाता है लेकिन delegate का return type और parameter type को डिफाइन करते समय generic type parameter को बिना angular brackets के डिफाइन किया जाता है
c# में generic delegates का प्रयोग निचे example के द्वारा समझाया गया है
using System; delegate void Aoperation<T>(T a,T b); class ArithOperation { Public void AddOperation(int a,int b) { Console.WriteLine(“Sum is :{0}”,a+b); } Public void MulOperation(int a,int b) { Console.WriteLine(“product is :{0}”,a*b); } } Class arithOperationFinal { Static void Main(string[] args) { ArithOperation ao=new ArithOperation(); Aoperation<int>addO=new Aoperation<int>(ao.AddOperation); AddO(2,2); Aoperation<int> mulO=new Aoperation<int>(ao.MulOperation); mulO(2,3); } }
reference-https://www.tutorialsteacher.com/csharp/csharp-generics
c# generic in hindi
निवेदन:-आप सभी छात्र –छात्रों से निवेदन है की अगर आपको ये Topic(c# generic in hindi) अच्छा लगा हो तो कृपया आप इस वेबसाइट के बारे में अपने दोस्तों को जरुर बताये अगर कोई topic(c# generic in hindi) से संबधित प्रश्न हो तो कमेंट्स(comments) आपके लिए ही बना है और किसी Subject के लेकर भी कोई प्रश्न हो तो कमेंट करे “आपका comments हमारे लिए बहुमूल्य है “ *_*धन्यवाद
How would i recognize that this class is generic ?