2011-08-03 10 views
6
using System.Collections.Generic; 

public sealed class LoLQueue<T> where T: class 
{ 
    private SingleLinkNode<T> mHe; 
    private SingleLinkNode<T> mTa; 

    public LoLQueue() 
    { 
     this.mHe = new SingleLinkNode<T>(); 
     this.mTa = this.mHe; 
    } 
} 

त्रुटि:गैर सामान्य प्रकार 'System.Collections.IEnumerable' प्रकार तर्क के साथ नहीं किया जा सकता

The non-generic type 'LoLQueue<T>.SingleLinkNode' cannot be used with type arguments 

मैं इस क्यों मिलता है?

+1

सिंगललिंक नोड की आपकी परिभाषा क्या है? –

उत्तर

2

मुझे पूरा यकीन है कि आपने सामान्य 0 पैरामीटर के रूप में SingleLinkNode कक्षा को परिभाषित नहीं किया है। इस प्रकार, इसे एक के साथ घोषित करने का प्रयास असफल रहा है।

त्रुटि संदेश पता चलता है कि SingleLinkNode एक नेस्टेड वर्ग है, इसलिए मुझे लगता है कि क्या हो रहा हो सकता है कि आप प्रकार T की SingleLinkNode के सदस्यों की घोषणा कर रहे हैं, वास्तव में SingleLinkNode के लिए एक सामान्य पैरामीटर के रूप में T घोषित करने के बिना है। यदि आप सामान्य होने के लिए SingleLinkNode चाहते हैं, तो आपको अभी भी ऐसा करने की आवश्यकता है, लेकिन यदि नहीं, तो आप SingleLinkNode<T> के बजाय कक्षा को SingleLinkNode के रूप में उपयोग कर सकते हैं।

मैं क्या मतलब का उदाहरण:

public class Generic<T> where T : class 
{ 
    private class Node 
    { 
     public T data; // T will be of the type use to construct Generic<T> 
    } 

    private Node myNode; // No need for Node<T> 
} 

यदि आप अपने नेस्टेड वर्ग सामान्य हो करना चाहते हैं, तो यह काम करेगा:

public class Generic<T> where T : class 
{ 
    private class Node<U> 
    { 
     public U data; // U can be anything 
    } 

    private Node<T> myNode; // U will be of type T 
} 
19

यदि आप IEnumerable<T> का उपयोग करना चाहते हैं, क्योंकि आपके पोस्ट के शीर्षक से पता चलता है, तो आपको using System.Collections.Generic; शामिल करना होगा।

सिंगललिंक नोड क्लास के लिए, मुझे नहीं पता कि आपको यह कहां मिला, यह .NET फ्रेमवर्क का हिस्सा नहीं है जिसे मैं देख सकता हूं। मुझे लगता है कि यह जेनेरिक का उपयोग करके लागू नहीं किया गया है, और आपको object से T पर हर जगह कास्ट जोड़ने की आवश्यकता होगी।

+0

अभी भी कुछ भी नहीं = \ – Danpe

+3

वह पहले से ही अपने कोड के ** पहली पंक्ति ** पर सूचीबद्ध है। – WEFX

+0

सच है, लेकिन इस प्रश्न के शीर्षक पर विचार करना "गैर-सामान्य प्रकार प्रणाली है। चयन। INumerable", मुझे लगता है कि कोड की कॉपी-पेस्ट में कुछ बदल गया है। –

2

यह मेरे लिए संकलित:

public sealed class SingleLinkNode<T> 
{ 

} 

public sealed class LoLQueue<T> where T : class 
{ 
    private SingleLinkNode<T> mHe; 
    private SingleLinkNode<T> mTa; 

    public LoLQueue() 
    { 
     this.mHe = new SingleLinkNode<T>(); 
     this.mTa = this.mHe; 
    } 
} 

आपको आगे के लिए अपने सिंगललिंक नोड क्लास को पोस्ट करने की आवश्यकता होगी ers ...

जॉन

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