using System.Diagnostics;
public interface IInterface
public virtual void FuncB()
public class ClassB : ClassA, IInterface
public override void FuncB()
public const int Iterations = 10000000;
public static void Main()
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < Iterations; i++)
Console.WriteLine("Interface: {0}", sw.ElapsedMilliseconds);
sw = Stopwatch.StartNew();
for (int i = 0; i < Iterations; i++)
Console.WriteLine("Virtual: {0}", sw.ElapsedMilliseconds);