1 using System;
 2 
 3 public interface Fooable
 4 {
 5     void Foo();
 6 }
 7 
 8 public class Fooer : Fooable
 9 {
10     public Fooer() : foo("foo")
11     {
12     }
13     public void Foo()
14     {
15         Console.Out() << foo << endl();
16     }
17     private string foo;
18 }
19 
20 void main()
21 {
22     Fooer fooer;
23     Fooable fooable = fooer;
24     fooable.Foo();
25 
26     UniquePtr<Fooer> fooer2(new Fooer());
27     Fooer* fooerPtr = fooer2.Get();
28     Fooable fooable2 = *fooerPtr;
29     fooable2.Foo();
30 }