Frederik is right कि List<T>
के IList
के कार्यान्वयन कुछ सदस्यों, विशेष रूप से उन है कि एक खतरा सुरक्षा टाइप करने के लिए स्पष्ट है।
वह अपने उत्तर में जो कार्यान्वयन सुझाता है वह सही नहीं हो सकता है, क्योंकि यह संकलित नहीं होगा।
इस तरह के मामलों में, सामान्य दृष्टिकोण पर एक बहादुर प्रयास करना है, को इंटरफ़ेस सदस्य को काम करने के लिए प्रयास करें, लेकिन अगर यह असंभव है तो छोड़ दें।
ध्यान दें कि IList.Add
विधि वापस जाने के लिए परिभाषित किया गया है:
स्थिति है जिसमें नई तत्व सम्मिलित किया गया था, या -1 लिए संकेत मिलता है कि आइटम संग्रह में सम्मिलित नहीं किया किया गया था।
तो वास्तव में, एक पूर्ण कार्यान्वयन संभव है:
int IList.Add(object value)
{
if (value is T)
{
Add((T)value);
return Count - 1;
}
return -1;
}
यह निश्चित रूप से, एक अनुमान सिर्फ है। (यदि आप वास्तव में निश्चित रूप से जानना चाहते हैं, तो आप हमेशा Reflector का उपयोग कर सकते हैं।) यह थोड़ा अलग हो सकता है; उदाहरण के लिए यह NotSupportedException
फेंक सकता है, जिसे ReadOnlyCollection<T>
के IList<T>
के कार्यान्वयन जैसे अपूर्ण इंटरफ़ेस कार्यान्वयन के लिए अक्सर किया जाता है। लेकिन चूंकि उपरोक्त IList.Add
की दस्तावेजी आवश्यकताओं को पूरा करता है, मुझे संदेह है कि यह वास्तविक चीज़ के करीब है।
स्रोत
2010-12-08 14:54:39
मुझे यकीन नहीं है कि इसका खुलासा करके आपका क्या मतलब है, इंटरफेस में केवल सार्वजनिक सदस्य ही हो सकते हैं। –
@ ब्रैड: 'सूची' एक इंटरफ़ेस नहीं है, और वह कह रहा है कि 'सूची ' का खुलासा नहीं करना चाहिए। –
इसे "स्पष्ट अंतरफलक कार्यान्वयन" कहा जाता है। – codymanix