title: What is assembly in C# in the context of internal access modifier?
body: <p>I thought that assembly is a project in a solution in Visual Studio, but then I was trying to understand inheritance and internal/protected access modifiers and I got lost.<br>
  *<code>Project1</code> and <code>Project2</code> are separate VS projects in one solution:</p>
  
  <pre><code>namespace Project1
  {
      public class C1
      {
          internal int field1;
          internal protected int field2;
      }
  }
  </code></pre>
  
  <p><br></p>
  
  <pre><code>namespace Project2
  {
      public class C2
      {
          public static void f(C1 c1)
          {
              c1.field1 = 1;  //no problems here
              c1.field2 = 2;  //neither here
          }
      }
  }
  </code></pre>
  
  <p><br></p>
  
  <p>In <code>Project2</code> I have no inheritance so both fields <code>field1</code> and <code>field2</code> should be inaccessible but there's no errors at all. (I added Project1 into Project2 References and add <code>using Project1</code> in <code>Project2</code>)</p>