This is an example from MSDN which is from the portion explaining 'protected'member access modifier. My question is, why I am getting compile error, if I modifying this program like in Example II,
Example I
class A
{
protected int x = 123;
}
class B : A
{
static void Main()
{
A a = new A();
B b = new B();
b.x = 10;
}
}
Example II
class A
{
protected int x = 123;
}
//MODIFICATION IN BELOW 2 LINES
class B : A{}
class program
{
static void Main()
{
A a = new A();
B b = new B();
b.x = 10;
}
}
Compiler Error for Example II :
d:\MyProgs>csc _13protected.cs
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.
_13protected.cs(14,15): error CS0122: 'A.x' is inaccessible due to its
protection level
_13protected.cs(3,23): (Location of symbol related to previous error)
d:\MyProgs>
protected
means it's not visible outside of the class itself, only in the class itself or derived classes.In your first example it works because your
main
method is part of the derived class.In your second example, your are trying to access a protected member outside of its class, which is not possible. If you want to make this possible,
x
should be declaredpublic
.See http://msdn.microsoft.com/en-us/library/bcd5672a.aspx for more information about what
protected
means.