मैं this code के लिए उपयोग नहीं कर सकता। इस पैटर्न का क्या उपयोग है?इस कोड का क्या उपयोग है?
public class Turtle<T> where T : Turtle<T>
{
}
मैं this code के लिए उपयोग नहीं कर सकता। इस पैटर्न का क्या उपयोग है?इस कोड का क्या उपयोग है?
public class Turtle<T> where T : Turtle<T>
{
}
यह पैटर्न अनिवार्य रूप से आपको मूल वर्ग के भीतर एक ठोस उप-वर्ग का संदर्भ देने की अनुमति देता है। उदाहरण के लिए:
public abstract class Turtle<T> where T : Turtle<T>
{
public abstract T Procreate();
}
public class SeaTurtle : Turtle<SeaTurtle>
{
public override SeaTurtle Procreate()
{
// ...
}
}
बनाम:
public abstract class Turtle
{
public abstract Turtle Procreate();
}
public class SnappingTurtle : Turtle
{
public override Turtle Procreate()
{
// ...
}
}
पूर्व में, यह निर्दिष्ट है कि एक SeaTurtle
के बच्चे को एक SeaTurtle
हो जाएगा।
क्या आपको लगता है कि अगर इस तरह की चीज की आवश्यकता नहीं है, तो अनुबंध भिन्नता के लिए समर्थन है? – shahkalpesh
इसे और अधिक उपयोग मिल गया है। यह सबक्लास के लिए इंटरफेस लागू कर सकता है। जैसे, जावा में, 'java.lang.Enum' subclass के लिए' java.lang.comparable 'को लागू करने के लिए पैटर्न का उपयोग करता है। मुझे यकीन है कि सी # में कुछ समान है। –
निश्चित रूप से अन्य उपयोग हैं, लेकिन उनमें सभी माता-पिता को अपने उप-वर्ग के प्रकार का उपयोग करने की आवश्यकता है। इंटरफेस के कार्यान्वयन के संबंध में, आपके पास दो विकल्प हैं: टी या कछुए
[कोड यहाँ भावी पीढ़ी के लिए बार-बार] किसी काम का नहीं है कि मैं देख सकता है। असल में, यह
public class Turtle
{
}
यह वही नहीं है क्योंकि दिए गए कोड में, 'कछुए' को तत्काल नहीं किया जा सकता है। – strager
हां यह कर सकता है ... मार्क ग्रेवेल की टिप्पणी यहां देखें http://stackoverflow.com/questions/194484/whats-the-strangest-corner-case-youve-seen-in-c-or-net/1332344#1332344 –
@ लेवेस्क, और आरसीईक्स की टिप्पणी के बाद देखें। – strager
इसके कछुए नीचे सभी तरह से ... – Juliet
Wha !? मुझे कुछ याद आना होगा ... –
यदि आप मुझसे पूछें तो अधिक कछुए की जरूरत है। – Corey