Why in C# it is not allowed for derived classes to have greater accessibility than its base class.
For example this will give error : Inconsistent accessibility: bas
Because otherwise you would be expossing the BaseClass members further than intended.
One example of a problem would be public const int Age
. This is ok because it is only expossed within the same assembly, so versioning is safe. If you now use inheritence to make the class public you are exposing this const field outside of the assembily. This could cause errors if the value is ever changed.
Often I make a class internal so that I don't have to worry so much about versioning it's public interface in the future. I am free to change it at any time and as long as that one assembily compiles it is ok. If someone came along and expossed it publicly, I would now have to resepect that public interface forever.