using System;
namespace Private
{
// 假定 B 是一个基类,它声明了一个私有的实例成员 M,而 D 是从 B 派生的类。在 B 的类体中,对 M 的访问可采取下列形式之一:
//
// M 形式的非限定类型名或初等表达式。 (this.M)
// E.M 形式的初等表达式(其中,E 是类 B 或是从 B 派生的类)。
// 在D中不可访问M
public class A
{
private int x;
private void ABase()
{
Console.WriteLine(this.GetType());
}
public A()
{
}
public void F()
{
A a = new A();
B b = new B();
A ab = b;
x = 0;
this.x = 0;
a.x =1;
b.x = 1;
ab.x = 3;
Console.WriteLine(base.GetType());
Console.WriteLine(this.GetType());
}
}
// 在 A 中可以通过 A 和 B 的实例访问 x,这是因为在两种情况下访问都通过 A 的实例或从 A 派生的类发生。
public class B: A
{
int y;
public new void F()
{
A a = new A();
B b = new B();
A ab = b;
// x = 0;
// this.x = 0;
// a.x =1;
// b.x = 1;
// ab.x = 3;
// base.x =1;
Console.WriteLine(base.GetType());
Console.WriteLine(this.GetType());
}
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
A a = new A();
B b = new B();
a.F();
b.F();
}
}
}