// // Stress test properties and the various modes of // declarations (virtual, overrides, abstract, new) // using System; interface I { int P { get; set; } } abstract class A : I { public int p; public int q; public int P { get { return p; } set { p = value; } } public abstract int Q { get; set; } public int r; public virtual int R { get { return r; } set { r = value; } } } class B : A { public int bp; public new int P { get { return bp; } set { bp = value; } } public override int Q { get { return q; } set { q = value; } } } class C : A { public override int Q { get { return q; } set { q = value; } } public int rr; public override int R { get { return rr; } set { rr = value; } } } class M { public static int Main () { B b = new B (); b.P = 1; b.R = 10; b.Q = 20; if (b.P != 1) return 1; if (b.bp != 1) return 2; if (b.R != 10) return 3; if (b.r != 10) return 4; if (b.Q != 20) return 5; if (b.q != 20) return 6; C c = new C (); c.R = 10; c.Q = 20; c.P = 30; if (c.R != 10) return 7; if (c.rr != 10) return 8; if (c.P != 30) return 9; if (c.p != 30) return 10; Console.WriteLine ("Test passes"); return 0; } }