2008-11-20 25 views

उत्तर

34

यह एक सामान्य विधि है, बनाएं प्रकार पैरामीटर के साथ घोषित किया गया है, और अधिक जानकारी के लिए इस लिंक को जांचें:

+0

धन्यवाद, बिल्कुल वही जो मैं खोज रहा था। Thx दोस्त – inspite

+0

पहला लिंक वास्तव में सहायक है; हालांकि दो अन्य टूट गए हैं। – GDP2

18

यह एक सामान्य विधि कॉल कर रहा है - तो आपके मामले में, विधि घोषित किया जा सकता है इस तरह:

0123:

public T Create<T>() 

आप कोण कोष्ठक में टाइप तर्क, बस के रूप में आप एक सामान्य प्रकार का एक उदाहरण बनाने के लिए निर्दिष्ट कर सकते हैं

क्या इससे मदद मिलती है? सामान्य तरीकों और जेनेरिक प्रकार के बीच

एक अंतर यह है कि संकलक प्रकार तर्क अनुमान लगाने के लिए कोशिश कर सकते हैं। उदाहरण के लिए, यदि आपका Create विधि के बजाय थे:

public T Copy<T>(T original) 

तुम सिर्फ

Copy(someEvent); 

कह सकते हैं और संकलक का अनुमान लगा है कि आप का मतलब:

Copy<Event>(someEvent); 
+1

मेरी इच्छा है कि मैं दो सही उत्तरों चुन सकता हूं। धन्यवाद दस लाख: डी – inspite

+0

क्या यह निर्भरता इंजेक्शन का एक रूप माना जाएगा? –

+0

@mmmshuddup: नहीं, मैं ऐसा नहीं कहूंगा। –

0

यह जिस तरह से आप सी # में एक सामान्य विधि का उल्लेख है।

जब आप एक सामान्य विधि को परिभाषित आप इस तरह कोड:

Array.ForEach(myArray, Console.WriteLine); 
:

return-type MethodName<type-parameter-list>(parameter-list) 

जब आप एक सामान्य विधि कॉल, संकलक आमतौर पर निर्दिष्ट तर्कों से प्रकार पैरामीटर, इस उदाहरण की तरह infers

इस उदाहरण में, यदि "myArray" एक स्ट्रिंग सरणी है, तो यह Array को कॉल करेगा। FEEach < स्ट्रिंग > और यदि यह एक int सरणी है, तो यह Array को कॉल करेगा। FEEach <int>।

कभी-कभी, संकलक से पैरामीटर से प्रकार का अनुमान लगाने के लिए असंभव है (जैसे आपका उदाहरण, जहां कोई पैरामीटर नहीं है)। इन मामलों में, आपको उन्हें मैन्युअल रूप से निर्दिष्ट करना होगा।

0

यह वाक्यविन्यास सिर्फ एक विधि के लिए जेनिक्स लागू कर रहा है। यह आमतौर पर उन परिदृश्यों के लिए उपयोग किया जाता है जहां आप विधि के रिटर्न प्रकार को नियंत्रित करना चाहते हैं। आपको इस प्रकार का सिंटैक्स कोड में बहुत कुछ मिलेगा जो आईओसी फ्रेमवर्क का उपयोग करता है।

संबंधित मुद्दे