Working with C# Method Overriding: An example with explanation

Method overriding is a feature of inheritance that allows a derived class to provide a specific implementation of a method that is already defined in the base class. To override a method, you must use the virtual keyword when defining the method in the base class, and use the override keyword when defining the method in the derived class. 

Here's a program based on C# method overriding with an explanation:
using System;

namespace MethodOverridingExample
{
    class Animal
    {
        public virtual void MakeSound()
        {
            Console.WriteLine("The animal makes a sound.");
        }
    }

    class Cat : Animal
    {
        public override void MakeSound()
        {
            Console.WriteLine("The cat meows.");
        }
    }

    class Dog : Animal
    {
        public override void MakeSound()
        {
            Console.WriteLine("The dog barks.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Animal animal = new Animal();
            animal.MakeSound();

            Cat cat = new Cat();
            cat.MakeSound();

            Dog dog = new Dog();
            dog.MakeSound();

            Console.ReadLine();
        }
    }
}
In this program, we have a base class Animal with a virtual method MakeSound(). The Cat and Dog classes inherit from the Animal class and override the MakeSound() method with their own implementation. 

In the Main method, we create an instance of the base Animal class and call its MakeSound() method. This outputs "The animal makes a sound." to the console. 

Next, we create an instance of the Cat class and call its MakeSound() method. This outputs "The cat meows." to the console. 

Finally, we create an instance of the Dog class and call its MakeSound() method. This outputs "The dog barks." to the console. 

The use of virtual keyword in the Animal class MakeSound() method allows the derived classes Cat and Dog to override the method with their own implementation. The use of override keyword in the derived classes' MakeSound() methods indicates that they are overriding the base class method. 

This concept of overriding a method in a derived class is called method overriding, and it is a fundamental concept in object-oriented programming.