Matching C # keywords with IL keywords is not always logical. Ecma-335, section II.23.1.15 shows which flags are valid for the type. You will see that it only defines Public, NotPublic, and the NestedXxx flag set. Nothing like "inner." Thus, your class is actually NotPublic, displayed as "private" in ildasm.
It's easy to see a side effect of this: try this ad in C # code:
private class DoesNotWork { }
You'll get:
error CS1527: Elements defined in the namespace cannot be explicitly declared as private, protected, or protected internal
source share