using System;
public class Test {
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
static Test() {
// Test can access public or internal members in a public or private (or internal) nested class (C1, C2)
C1.publicIntC1 = 1;
C1.internalIntC1 = 2;
C2.publicIntC2 = 3;
C2.internalIntC2 = 4;
// C2.privateInt = 7; // error CS0117: `Test.C2' does not contain a definition for `privateInt'
}
public class C1 {
public static int publicIntC1 = 11;
internal static int internalIntC1 = 22;
private static int privateIntC1 = 33;
}
private class C2 {
public static int publicIntC2 = 333;
internal static int internalIntC2 = 444;
private static int privateIntC2 = 555;
}
}
class MainClass
{
static void Main()
{
Test.publicInt = 3; // Access unlimited
Test.internalInt = 4; // Access only in current assembly
// Test.privateInt = 5; // error CS0122: `Test.privateInt' is inaccessible due to its protection level
Test.C1.publicIntC1 = 77; // Access unlimited
Test.C1.internalIntC1 = 88; // Access only in current assembly
//Test.C1.privateIntC1 = 33; // error CS0122: `Test.C1.privateIntC1' is inaccessible due to its protection level
// private class C2
//Test.C2.publicIntC2 = 222; // error CS0122: `Test.C2' is inaccessible due to its protection level
// private class C2
//Test.C2.internalIntC2 = 888; // error CS0122: `Test.C2' is inaccessible due to its protection level
// private class C2
//Test.C2.privateIntC2 = 777; // error CS0122: `Test.C2' is inaccessible due to its protection level
}
}
/*
run:
*/