The internal
keyword is an access modifier for types and type members. Internal types or members are accessible only within files in the same assembly
usage:
public class BaseClass
{
// Only accessible within the same assembly
internal static int x = 0;
}
The difference between different access modifiers is clarified here
Access modifiers
public
The type or member can be accessed by any other code in the same assembly or another assembly that references it.
private
The type or member can only be accessed by code in the same class or struct.
protected
The type or member can only be accessed by code in the same class or struct, or in a derived class.
internal
The type or member can be accessed by any code in the same assembly, but not from another assembly.
protected internal
The type or member can be accessed by any code in the same assembly, or by any derived class in another assembly.
When no access modifier is set, a default access modifier is used. So there is always some form of access modifier even if it's not set.