   [.net] C# internal and protected internal
  I've programmed a few different languages and I noticed a couple of access modifiers that I haven't seen before the keywords internal and protected internal.In the tutorial I'm reading it states that it's only visible in the same assembly.  I'm assuming that they're not refering to the Assembly language so can someone give me a clearer picture as to what they're talking about?  Thanks.   
  An "assembly," is (basically) an .exe or .dll.   ;  internal effectively means that anything from your project can access it, and anything outside can't.   ;  awww okay, that makes more sense.what is protected internal mean then?   ;  protected internal means only accessible by entities in the assembly or types derived from the containing class. So if you have a public class with a protected internal member you can derived a class from that and access the member from outside the assembly, or anything from inside the assembly can access it.   ;  An example of using internal is in user interface libraries. Suppose that you need a control's focused status to true, if you had:public bool IsFocused{   get { return isFocused; }   set { isFocused = value; }}Everyone cold programmatically set IsFocused to true, (Same reasoning applies if you have a "SetFocus" method) but maybe that's not what you want (academics would turn in their graves :D) If you change it in this way:public bool IsFocused{   get { return isFocused; }   internal set { isFocused = value; }}Only the classes from the user interface assembly will be able to set a control's focused status to true, and so you can be sure that "the correct way" of focusing a control is adopted (your way!). For the user of the library, the write accessor will be invisible and not accessible.   ;  Thanks everyone, I think I'm understanding it a lot better.   