CS0506 de erro do compilador

Mensagem de erro

'function1': não é possível substituir membro herdado 'function2' porque ele não está marcado como "virtual", "abstrato" ou "substituir"

Um método foi substituído que não foi explicitamente marcado sistema autônomo virtual, Resumo, or override.

O exemplo a seguir gera CS0506:

// CS0506.cs
namespace MyNameSpace
{
   abstract public class ClassX
   {
      public int i = 0;

      public int f()
      {
         return 0;
      }
      // Try the following definition for f() instead:
      // abstract public int f();
   }

   public class ClassY : ClassX
   {
      public override int f()   // CS0506
      {
         return 0;
      }

      public static int Main()
      {
         return 0;
      }
   }
}