//C# Shadowing - Shadows Static Typing en Dynamic Binding namespace Redefinition { public class Class1 { public virtual void Method1() { Console.WriteLine("Class1.Method1()"); } } public class Class2 : Class1 { public override void Method1() { Console.WriteLine("Class2.Method1()"); } } public class Class3 : Class2 { public override void Method1() { Console.WriteLine("Class3.Method1()"); } } public class Example { public static void Main() { Class1 object1_1 = new Class1(); Class1 object1_2 = new Class2(); Class1 object1_3 = new Class3(); Class2 object2_2 = new Class2(); Class2 object2_3 = new Class3(); Class3 object3_3 = new Class3(); object1_1.Method1(); object1_2.Method1(); object1_3.Method1(); object2_2.Method1(); object2_3.Method1(); object3_3.Method1(); Console.ReadLine(); } } } namespace Shadowing { public class Class1 { public virtual void Method1() { Console.WriteLine("Class1.Method1()"); } } public class Class2 : Class1 { public new virtual void Method1() { Console.WriteLine("Class2.Method1()"); } } public class Class3 : Class2 { public override void Method1() { Console.WriteLine("Class3.Method1()"); } } } namespace Shadowing { public class Example { public static void Main() { Class1 object1_1 = new Class1(); Class1 object1_2 = new Class2(); Class1 object1_3 = new Class3(); Class2 object2_2 = new Class2(); Class2 object2_3 = new Class3(); Class3 object3_3 = new Class3(); object1_1.Method1(); object1_2.Method1(); object1_3.Method1(); object2_2.Method1(); object2_3.Method1(); object3_3.Method1(); Console.ReadLine(); } } } namespace FragileBaseClass1 { public class CharString { private char[] m_Items; public virtual void Add(char aChar) { this.m_Items((this.m_Items.Length - 1)) = aChar; } public virtual void AddAll(char[] chars) { for (System.Collections.IEnumerator _it1 = chars.GetEnumerator(); _it1.MoveNext(); ) { char charElement = ((char)(_it1.Current)); this.Add(charElement); } } public override void ToString() { if ((this.m_Items != null)) { for (System.Collections.IEnumerator _it1 = this.m_Items.GetEnumerator(); _it1.MoveNext(); ) { char charElement = ((char)(_it1.Current)); ToString = charElement; } } } } } namespace FragileBaseClass1 { public class CountedCharString : CharString { private int m_Count; public virtual int Count { get { Count = this.m_Count; } } public override void Add(char aChar) { base.Add(aChar); this.m_Count += new System.EventHandler(1); } } } namespace FragileBaseClass1 { public class Example { public static void Main() { CountedCharString countedCharString1 = new CountedCharString(); countedCharString1.Add('a'); countedCharString1.Add('b'); countedCharString1.AddAll(new char[] { 'c', 'd'}); Console.WriteLine(countedCharString1.ToString()); Console.WriteLine(countedCharString1.Count); Console.ReadLine(); } } } namespace FragileBaseClass2 { public class CharString { private char[] m_Items; public virtual void Add(char aChar) { this.m_Items((this.m_Items.Length - 1)) = aChar; } public virtual void AddAll(char[] chars) { int oldUpperBound; int newUpperBound; if ((this.m_Items != null)) { oldUpperBound = (this.m_Items.Length - 1); } if ((chars != null)) { newUpperBound = (oldUpperBound + chars.Length); } int index = (oldUpperBound + 1); for (System.Collections.IEnumerator _it1 = chars.GetEnumerator(); _it1.MoveNext(); ) { char charElement = ((char)(_it1.Current)); this.m_Items(index) = charElement; this.index += new System.EventHandler(1); } } public override void ToString() { if ((this.m_Items != null)) { for (System.Collections.IEnumerator _it1 = this.m_Items.GetEnumerator(); _it1.MoveNext(); ) { char charElement = ((char)(_it1.Current)); ToString = charElement; } } } } public class CountedCharString : CharString { private int m_Count; public virtual int Count { get { Count = this.m_Count; } } public override void Add(char aChar) { base.Add(aChar); this.m_Count += new System.EventHandler(1); } } } namespace FragileBaseClass2 { public class Example { public static void Main() { CountedCharString countedCharString1 = new CountedCharString(); countedCharString1.Add('a'); countedCharString1.Add('b'); countedCharString1.AddAll(new char[] { 'c', 'd'}); Console.WriteLine(countedCharString1.ToString()); Console.WriteLine(countedCharString1.Count); Console.ReadLine(); } } } namespace OverloadingRedefinitionOrShadowing1 { public class Class1 { public virtual void Test() { Console.WriteLine("Class1.Test()"); } } public class Class2 : Class1 { public virtual void Test() { Console.WriteLine("Class2.Test()"); } } public class Example { public static void Main() { Class1 object1_1 = new Class1(); object1_1.Test(); Class1 object1_2 = new Class2(); object1_2.Test(); Class2 object2 = new Class2(); object2.Test(); Console.ReadLine(); } } } namespace OverloadingRedefinitionOrShadowing2 { public class Class1 { public virtual void Test() { Console.WriteLine("Class1.Test()"); } } public class Class2 : Class1 { public virtual void Test() { Console.WriteLine("Class2.Test()"); } } public class Example { public static void Main() { Class1 object1_1 = new Class1(); object1_1.Test(); Class1 object1_2 = new Class2(); object1_2.Test(); Class2 object2 = new Class2(); object2.Test(); Console.ReadLine(); } } } namespace OverloadingRedefinitionOrShadowing3 { public class Class1 { public virtual void Test() { Console.WriteLine("Class1.Test()"); } } public class Class2 : Class1 { public override void Test() { Console.WriteLine("Class2.Test()"); } } public class Example10 { public static void Main() { Class1 object1_1 = new Class1(); object1_1.Test(); Class1 object1_2 = new Class2(); object1_2.Test(); Class2 object2 = new Class2(); object2.Test(); Console.ReadLine(); } } } namespace OverloadingRedefinitionOrShadowing4 { public class Class1 { public virtual void Test() { Console.WriteLine("Class1.Test()"); } } public class Class2 : Class1 { public new virtual void Test() { Console.WriteLine("Class2.Test()"); } } public class Example11 { public static void Main() { Class1 object1_1 = new Class1(); object1_1.Test(); Class1 object1_2 = new Class2(); object1_2.Test(); Class2 object2 = new Class2(); object2.Test(); Console.ReadLine(); } } } namespace OverloadingRedefinitionOrShadowing5 { public class Class1 { public virtual void Test() { Console.WriteLine("Class1.Test()"); } } public class Class2 : Class1 { public virtual void Test() { Console.WriteLine("Class2.Test()"); } } public class Example12 { public static void Main() { Class1 object1_1 = new Class1(); object1_1.Test(); Class1 object1_2 = new Class2(); object1_2.Test(); Class2 object2 = new Class2(); object2.Test(); Console.ReadLine(); } } //Bezoek www.vbvoorbeelden.be voor meer C# voorbeelden. //Copyright - De Wolf / vbvoorbeelden - 2003-2011 - Alle rechten voorbehouden.