title: Can't create new MatchCollection -- no constructors defined
body: <p>So, maybe I'm tired, but why can't I create a new <code>MatchCollection</code>?</p>
  
  <p>I have a method that returns a <code>MatchCollection</code> by calling <code>regex.Matches</code>:</p>
  
  <pre><code>public static MatchCollection GetStringsWithinBiggerString(string sourceString)
  {
      Regex regex = new Regex(@"\$\(.+?\)");
  
      return regex.Matches(sourceString);
  }
  </code></pre>
  
  <p>What I wanted to do was return an empty collection if the parameter was null:</p>
  
  <pre><code>public static MatchCollection GetStringsWithinBiggerString(string sourceString)
  {
      if (sourceString == null)
      {
          return new MatchCollection();
      }
  
      Regex regex = new Regex(@"\$\(.+?\)");
  
      return regex.Matches(sourceString);
  }
  </code></pre>
  
  <p>But that won't compile because of this line:</p>
  
  <pre><code>return new MatchCollection();
  </code></pre>
  
  <p>The error:</p>
  
  <blockquote>
    <p>The type 'System.Text.RegularExpressions.MatchCollection' has no
    constructors defined.</p>
  </blockquote>
  
  <p>How can a type have no constructors defined? I thought a default constructor would be created if no constructor was explicitly defined. Is it not possible to create a new instance of <code>MatchCollection</code> for my method to return?</p>