2012-01-30 9 views
11

मैं एक सामान्य हेप सॉर्ट एल्गोरिदम लिखने की कोशिश कर रहा हूं। मुझे निम्नलिखित त्रुटि मिलती है। क्या कारण हो सकता है?नेस्टेड जेनेरिक फ़ंक्शन कैसे लिखें

प्रकार T सामान्य प्रकार या विधि Heap.MainClass.MaxHeapify<T>(T[], int, int) में प्रकार पैरामीटर T के रूप में इस्तेमाल नहीं किया जा सकता। वहाँ के लिए T से कोई मुक्केबाजी या प्रकार पैरामीटर रूपांतरण है System.IComparable<T> (CS0314) (HeapSort)

उत्तर

10

आप एक ही सामान्य बाधा है कि टी के साथ-साथ HeapSort समारोह पर IComparable<T> को लागू करना चाहिए निर्दिष्ट करने की आवश्यकता:

private static void HeapSort<T>(T[] items) where T : IComparable<T> 

आपने MaxHeapify विधि पर इस बाधा को निर्दिष्ट किया है और इसे कॉल करने के लिए, टी को इस शर्त को पूरा करना होगा।

+0

हां, स्पॉट ऑन। धन्यवाद! – Nemo

1

MaxHeapify<T>() विधि where T : IComparable की एक सामान्य बाधा है, लेकिन अपने HeapSort<T>() विधि यह नहीं है, और इसलिए संकलक HeapSort विधि से MaxHeapify करने के लिए कॉल को हल करने में सक्षम नहीं है। आपको अपने HeapSort<T>() विधि में where : IComparable की एक सामान्य बाधा जोड़नी चाहिए।

private static void HeapSort<T>(T[] items) where T : IComparable<T> 
संबंधित मुद्दे