<p>Could you please explain what the practical usage is for the <code>internal</code> keyword in C#?</p>

<p>I know that the <code>internal</code> modifier limits access to the current assembly, but when and in which circumstance should I use it?</p>

When you have classes or methods which don't fit cleanly into the Object-Oriented Paradigm, which do dangerous stuff, which need to be called from other classes and methods under your control, and which you don't want to let anyone else use.
```
```
public class DangerousClass {
    public void SafeMethod() { }
    internal void UpdateGlobalStateInSomeBizarreWay() { }
}
```
```