Class C# Tutorial

using System;
public interface ICompare {
    int GetValue();
    int Compare(ICompare ic);
}
abstract public class BaseClass : ICompare {
    int nValue;
    public BaseClass(int nInitialValue) {
        nValue = nInitialValue;
    }
    public int Value {
        get { return GetValue(); }
    }
    public int GetValue() {
        return nValue;
    }
    abstract public int Compare(ICompare bc);
}
public class SubClass : BaseClass {
    public SubClass(int nInitialValue)
        : base(nInitialValue) {
    }
    override public int Compare(ICompare ic) {
        return GetValue().CompareTo(ic.GetValue());
    }
}
public class Class1 {
    public static void Main(string[] strings) {
        SubClass sc1 = new SubClass(10);
        SubClass sc2 = new SubClass(20);
        MyFunc(sc1, sc2);
    }
    public static void MyFunc(ICompare ic1, ICompare ic2) {
        Console.WriteLine("bc1.Compare(bc2) returned {0}",
                          ic1.Compare(ic2));
    }
}