लौटने पर मैं जेनेरिक और आईनेमरेबल अबाइट के साथ गड़बड़ कर रहा हूं, लेकिन मैं थोड़ी देर से अटक गया हूं। यहाँ मुझे क्या करना कोशिश कर रहा हूँ है: - (?) मैं एक विधि है कि किसी भी संग्रह प्रकार रिटर्न चाहते हैं कि IEnumerable लागू करता है - (ताकि जैसे: सूची, ढेर, कतार, ...)एक सामान्य आईनेमेरेबल <T>
इसके अलावा, मैं किसी भी डेटाटाइप के किसी संग्रह प्रकार को वापस करने में सक्षम होना चाहता हूं। तो मैं इस विधि एक List<double>
के रूप में एक Stack<int>
के साथ ही एक List<string>,
वापस जाने के लिए ... के साथ-साथ, वगैरह वगैरह
public IEnumerable<T> returnSomething()
{
Stack<int> stackOfInts = new Stack<int>();
List<string> listOfStrings = new List<string>();
return stackOfInts;
}
इस मैं अब तक की कोशिश की है है सक्षम होना चाहते हैं। इस हालांकि काम नहीं करता है, मैं इस त्रुटि मिलती है:
Cannot implicitly convert type 'System.Collections.Generic.Stack<int>' to 'System.Collections.Generic.IEnumerable<T>'. An explicit conversion exists (are you missing a cast?)
हालांकि, अगर मैं IEnumerable<int>
लिए विधि हस्ताक्षर में IEnumerable<T>
की जगह, मैं प्रकार int के किसी भी संग्रह लौट सकते हैं। हालांकि इसका मतलब है कि अब मैं ListOfStrings
वापस नहीं कर सकता।
आप अपने पद्धति के लिए एक generic type parameter जोड़ने की जरूरत है किसी भी सुझाव या विचार :)
धन्यवाद, यह वास्तव में काम करता है, लेकिन अब मैं नहीं कर सकते जोड़ने के लिए लग रहे हैं ढेर के लिए कुछ भी ..stackOfInts.Push (3); अगर मैं इसे आज़माता हूं, तो यह कहता है: "सबसे अच्छा ओवरलोडेड मैच .. कुछ अमान्य तर्क हैं"। कोई विचार? – Thousand
@ जेनडो: आप केवल 'टी' को 'स्टैक' में जोड़ सकते हैं। 3 जरूरी नहीं है 'टी'। जब तक आप एक [जेनेरिक टाइप बाधा] (http://msdn.microsoft.com/en-us/library/d5x73970.aspx) जोड़ते हैं, आपको पता नहीं है कि 'टी' क्या है, इसलिए आप एक भी निर्माण नहीं कर सकते हैं - ऐसा करने के लिए आपको 'नई()' बाधा की आवश्यकता होगी। आप क्या करने की कोशिश कर रहे हैं, और आपको इसकी आवश्यकता क्यों है? –
मुझे विशेष रूप से किसी भी चीज के लिए इसकी आवश्यकता नहीं है, मैं सिर्फ चीजों का एक गुच्छा कोशिश कर रहा हूं। लेकिन मुझे अब मिल गया, धन्यवाद। – Thousand