2011-10-19 15 views

उत्तर

7

एक new बाधा जोड़ें:

class Request<T> where T : new() { 
    private T sw; 

    public void Request() { 
     sw = new T(); 
    } 
} 

इस संकलक कि T हमेशा एक सुलभ parameterless निर्माता होगा (नहीं, तुम निर्माता के किसी भी अन्य प्रकार निर्दिष्ट नहीं कर सकते) बताता है।

+0

इस सही और तेज़ उत्तर के लिए धन्यवाद। – Racooon

5

आपको कक्षा घोषणा में where T : new() की बाधा घोषित करने की आवश्यकता है। यह सार्वजनिक डिफ़ॉल्ट कन्स्ट्रक्टर के साथ T को प्रतिबंधित करने के लिए प्रतिबंधित है।

class Request<T> where T : new() 
{ 
    private T sw; 

    public Request() 
    { 
     sw = new T(); 
    } 
} 

अधिक जानकारी: उदाहरण के लिए: http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+0

धन्यवाद, एक उदाहरण बहुत उपयोगी होगा। – Racooon

+0

@VuralAcar - कोई समस्या नहीं, उदाहरण के साथ अपडेट किया गया। –

5

आप संकलक कि टी हमेशा एक parameterless निर्माता को लागू करता है बताने के लिए की जरूरत है।

class Request<T> where T : new() 
+0

"एक डिफ़ॉल्ट निर्माता" – BoltClock

+0

@ बोल्टक्लॉक: शायद एक पैरामीटर रहित कन्स्ट्रक्टर? नलिका कन्स्ट्रक्टर? यहाँ सबसे अच्छा शब्द क्या है? – Jimmy

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