title: C# Collection classes - yes or no
body: <p>I'm a relative newbie to C#, although I am a competent programmer, and I confess that I am totally confused as to whether or not it is a good idea to write custom collection classes. So many people seem to say "don't", yet there is a whole set of base classes for it in C#.</p>
  
  <p>Here is my specific case. I have a timetable application. As part of that, I have a service class, and the service class contains collections of things service-y, such as route links. A route link is itself a custom class:</p>
  
  <pre><code>public class Service
  {
    public RouteLinks RL;    // A collection of RouteLink types
    ...
  }
  
  public class RouteLink
  {
      public string FirstStopRef;
      public string LastStopRef;
      public Tracks RouteTrack;    // Another collection, this time of Track types
  }
  </code></pre>
  
  <p>So far I have looked at using Dictionary as the type for RouteLinks, because I need to be able to reference them. This is fine in principle. However, the process of adding a RouteLink to the RouteLinks collection involves checking to see whether it is already there, or whether it extends and existing route link, or... And for that, I need a custom Add function.</p>
  
  <p>So why is is such bad practice to create custom collection classes? Why shouldn't I just inherit CollectionBase or DictionaryBase?</p>
  
  <p>I should perhaps add that I am transferring this code from VBA [please don't shoot me :)] and there I HAD to implement custom collections. </p>