About Array and IList

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Tony Johansson

    #1

    About Array and IList

    Hello!

    The Array class implements these interfaces IClonable, IList, ICollection
    and IEnumerable.
    Note only interfaces are inherited and no classes so these interfaces will
    be implemented in the derived class.

    In Interface IList have a couple of members that is not available from the
    Array object.
    For example if I do the following
    int[] vector = new int[5];
    And then use the intellisense on instance vector I can't see for example
    Add, Remove RemoveAt
    there are more but these are just example of members that are not available
    from the vector instance.

    So my question is how is this possible?
    I must have missed something here about implementing interfaces !
    I have always thought that all implemented members must be accessible from
    the derived class which
    is not the case in this example.

    //Tony



  • =?ISO-8859-1?Q?G=F6ran_Andersson?=

    #2
    Re: About Array and IList

    Tony Johansson wrote:
    Hello!
    >
    The Array class implements these interfaces IClonable, IList, ICollection
    and IEnumerable.
    Note only interfaces are inherited and no classes so these interfaces will
    be implemented in the derived class.
    >
    In Interface IList have a couple of members that is not available from the
    Array object.
    For example if I do the following
    int[] vector = new int[5];
    And then use the intellisense on instance vector I can't see for example
    Add, Remove RemoveAt
    there are more but these are just example of members that are not available
    from the vector instance.
    >
    So my question is how is this possible?
    I must have missed something here about implementing interfaces !
    I have always thought that all implemented members must be accessible from
    the derived class which
    is not the case in this example.
    >
    //Tony
    >
    They are accessible from the class, but they are implemented explicitly,
    which means that you need an IList reference to access them.

    This compiles:

    ((IList)someArr ay).Add(42);

    Of course it throws a NotSupportedExc eption if you try to run the code.

    --
    Göran Andersson
    _____
    Göran Anderssons privata hemsida.

    Comment

    • Martin Honnen

      #3
      Re: About Array and IList

      Tony Johansson wrote:
      Hello!
      >
      The Array class implements these interfaces IClonable, IList, ICollection
      and IEnumerable.
      Note only interfaces are inherited and no classes so these interfaces will
      be implemented in the derived class.
      >
      In Interface IList have a couple of members that is not available from the
      Array object.
      For example if I do the following
      int[] vector = new int[5];
      And then use the intellisense on instance vector I can't see for example
      Add, Remove RemoveAt
      there are more but these are just example of members that are not available
      from the vector instance.
      >
      So my question is how is this possible?
      You need to cast your Array to IList first:

      string[] strings = new string[] { "foo", "bar" };
      IList stringList = (IList)strings;
      Console.WriteLi ne(stringList.C ontains("foo")) ;

      That is because IList is explicitly implemented by Array.




      --

      Martin Honnen --- MVP XML
      http://JavaScript.FAQTs.com/

      Comment

      Working...