This is code-related as in what the compiler will allow you to do in one language, but not allow you to do in another language (e.g. optional parameters in
VB and C# have different interpretations of what "protected" means.
Here's an explanation copied below:
The default constructor for WebControl is protected.
VB and C# have different interpretations of what "protected" means.
In VB, you can access a protected member of a class from any method in any type that derives from the class.
That is, VB allows this code to compile:
class Base protected m_x as integer end class class Derived1 inherits Base public sub Foo(other as Base) other.m_x = 2 end sub end class class Derived2 inherits Base end classBecause a "Derived1" is a base, it can access protected members of "other", which is also a base.
C# takes a different point of view. It doesn't allow the "sideways" access that VB does. It says that access to protected members can be made via "this" or any object of the same type as the class that contains the method.
Because "Foo" here is defined in "Derived1", C# will only allows "Foo" to access "Base" members from a "Derived1" instance. It's possible for "other" to be something that is not a "Derived1" (it could, for example, be a "Derived2"), and so it does not allow access to "m_x".