2009-07-22 15 views
15

ArrayList घोषित करता है कि यह IList, ICollection, और IEnumeralbe इंटरफेस लागू करता है।क्यों ArrayList IList, ICollection, IENumerable लागू करता है?

क्यों न केवल IList लागू है, क्योंकि IList भी ICollection से ली गई है, और ICollectionIEnumerable से ली गई है।

इस तरह की घोषणा का उद्देश्य क्या है? .NET BCL में इस तरह के कई मामले हैं।

उत्तर

7
निम्नलिखित कोड के साथ

:

interface I1 { } 
interface I2 : I1 { } 

class Foo: I2 { } 

आप प्रतिबिंब के माध्यम से फू को देखें, तो आप

class Foo: I2, I1 { } 

कौन सा भी संकलित करने के लिए वैध है और एक ही परिणाम देता है मिल जाएगा।
तो अंतर मंथन है, और फू दस्तावेज में आप इसे दोनों इंटरफेस के साथ भी लिख सकते हैं। Why collections classes in C# (like ArrayList) inherit from multiple interfaces if one of these interfaces inherits from the remaining?

-1
  1. IEnumerable - foreach बयान का समर्थन करने के
  2. ICollection - ArrayList
+0

प्रश्नकर्ता नहीं था पूछ रहे थे कि वे क्या थे - पूछ रहे थे कि क्यों उन्हें स्पष्ट रूप से लागू किया जा रहा है, जब वे पहले से ही आईलीस्ट पर विरासत के आधार पर लागू किए गए हैं –

13

में एक या कई आइटम जोड़ने के कोई प्रभावी अंतर नहीं है समर्थन करने के लिए। मेरा मानना ​​है कि स्पष्ट घोषणा के लिए अतिरिक्त घोषणाएं हैं।

जब परावर्तक में जाँच की है, वर्ग है जो कोड में लागू IList वर्ग है जो कोड में Ilist, ICollection और IEnumerable के सभी को लागू करने की घोषणा के रूप में एक ही इंटरफ़ेस घोषणा सूची है।

1

मैं इतना यकीन है कि ArrayList इंटरफेस की अलग कार्यान्वयन है नहीं कर रहा हूँ:

भी तो सवाल यह देखते हैं। निम्नलिखित कोड पर विचार करें:

public interface IBase 
{ 
    int SomeInt { get; set; } 
} 

public interface ISub : IBase 
{ 
    int SomeOther { get; set; } 
} 

public class MyClass : ISub 
{ 
    public int SomeOther { get; set; } 
    public int SomeInt { get; set; } 
} 

MyClass प्रकार केवल ISub इंटरफ़ेस सीधे लागू करता है। हालांकि, अगर आप एक विधानसभा में कोड संकलन, और फिर उस विधानसभा MyClass के लिए, एक अन्य परियोजना में संदर्भ के रूप में जोड़ने ऑब्जेक्ट ब्राउज़र खोलने के लिए और आधार प्रकार की जांच, यह कुछ इस तरह की सुविधा होगी:

Base Types 
|- ISub 
| |- IBase 
|- IBase 
|- Object 
संबंधित मुद्दे