जेनेरिक क्लास के लिए डिफॉल्ट कंस्ट्रक्टर के लिए सिंटैक्स क्या है?


87

क्या जेनरिक क्लास के लिए डिफॉल्ट कंस्ट्रक्टर को लागू करना C # में मना है?

यदि नहीं, तो नीचे दिया गया कोड क्यों संकलित नहीं है? (जब मैं <T>इसे हटाता हूं, हालांकि)

फिर सामान्य वर्ग के लिए डिफॉल्ट कंस्ट्रक्टर को परिभाषित करने का सही तरीका क्या है?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

संकलन समय त्रुटि : त्रुटि 1 अमान्य टोकन '(' वर्ग, संरचना या इंटरफ़ेस सदस्य घोषणा में)

जवाबों:


145

आप कंस्ट्रक्टर में टाइप पैरामीटर प्रदान नहीं करते हैं। यह है कि आप इसे कैसे करना चाहिए।

public class Cell<T> 
{
    public Cell()
    {
    }
}

11

और अगर आपको प्रॉपर्टी के रूप में टाइप की जरूरत है:

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}

6

और अगर आपको टाइप के एक उदाहरण को इंजेक्ट करने की आवश्यकता है:

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.