Accessibility Domains and you
Sometimes I forget nested type accessibility rules (can containing classes access private members of the nested types?). I recently stumbled upon a nice reference:
C# Language Specs:
3.5.2 Accessibility domains Included is a great little example at the bottom that serves as a nice quick reference:
In the example
public class A
{
public static int X;
internal static int Y;
private static int Z;
}
internal class B
{
public static int X;
internal static int Y;
private static int Z;
public class C
{
public static int X;
internal static int Y;
private static int Z;
}
private class D
{
public static int X;
internal static int Y;
private static int Z;
}
}
the classes and members have the following accessibility domains:
- The accessibility domain of
A and A.X is unlimited. - The accessibility domain of
A.Y, B, B.X, B.Y, B.C, B.C.X, and B.C.Y is the program text of the containing program. - The accessibility domain of
A.Z is the program text of A. - The accessibility domain of
B.Z and B.D is the program text of B, including the program text of B.C and B.D. - The accessibility domain of
B.D.X and B.D.Y is the program text of B, including the program text of B.C and B.D. - The accessibility domain of
B.D.Z is the program text of B.D.