IList Interface...

I've read what MSDN has to say about this, but I'm still not sure why this is useful.  I've found it in a lot of code from my teammates and was just trying to figure out what extra this gives...here's an example of the context it was used in...

public class SomeNewClass
{
   public SomeNewClass()
{
}
}

public class SomeNewClassCollection : System.Collections.CollectionBase
{
   public SomeNewClassCollection()
{
   }

public SomeNewClass this[int index]
{
      get
      {
return (SomeNewClass)((IList)this[index]);
}
}
}

 

The description for IList is: Represents a collection of objects that can be individually accessed by index.
Now isn't the code below exactly the same since it's inheriting from CollectionBase? Isn't anything that inherits from CollectionBase already individually accessable by index?

 

public class SomeNewClass
{
public SomeNewClass()
{
}
}

public class SomeNewClassCollection : System.Collections.CollectionBase
{
   public SomeNewClassCollection()
{
   }

public SomeNewClass this[int index]
{
      get
      {
return (SomeNewClass)this[index]; // no IList Interface
}
}
}