Back to slide -- Keyboard shortcut: 'u'                      co-contra-varians/ex.cs - The full C# program.Lecture 8 - slide 3 : 37
Program 1

using System;

class S{
  public void Sop(){
   Console.WriteLine("Sop");
  }
}

class T:S{
  public void Top(){
   Console.WriteLine("Top");
  }
}

class A {
 public void Op(S x){
   x.Sop();
 }
}

class B: A {
 public void Op(T x){
   x.Top();
 }
}

class Client{
 public static void Main(){
   A aref;
   B bref = new B();
   S sref = new S();

   aref = bref;    // aref is of static type A and dynamic type B
   aref.Op(sref);  // B.Op is called with an S-object as parameter.
                   // What if an operation from T is activated on the S-object?
 }
}