title: What kind of access modifiers can be applied to a class?
body: <p>After a little research I've determined that the only access modifiers which you can apply to classes are:</p>
  
  <ul>
  <li><strong>public</strong> - available in any assembly</li>
  <li><strong>internal</strong> - available only in the current assembly</li>
  </ul>
  
  <p>but the error message below seems to imply that if a class is <em>not</em> defined in a namespace that it could be defined as <em>private</em>, <em>protected</em>, or <em>protected internal</em>.</p>
  
  <p><strong>Are public and internal the only class modifiers you can use on class or are there more?</strong></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  
  namespace Test2343434
  {
      class Program
      {
          static void Main(string[] args)
          {
              Tools.ToolManager toolManager = new Tools.ToolManager();
  
              Console.ReadLine();
          }
      }
  
  }
  
  namespace Tools
  {
      //error: Elements defined in a namespace cannot be explicitly 
      //declared as private, protected, or protected internal
      private class ToolManager 
      {
          public ToolManager()
          {
              Console.WriteLine("inside tool manager");
          }
      }
  }
  </code></pre>