Studies show that good grammar leads to more promotions and higher salaries. Write with Grammarly

C# Error CS0506 – ‘function1’ : cannot override inherited member ‘function2’ because it is not marked “virtual”, “abstract”, or “override”

C# Compiler Error

CS0506 – ‘function1’ : cannot override inherited member ‘function2’ because it is not marked “virtual”, “abstract”, or “override”

Reason for the Error

You’ll get this error in your C# code when you attempt to override a member that is not explicitly marked as virtual, abstract, or override in the base class.

For example, let’s try to compile the below C# code snippet.

using System;
namespace DeveloperPublishNamespace
{
    public class BaseClass
    {
        public int Id { get; set; }
    }

    public class ChildClass : BaseClass
    { 
        public override int Id { get; set; }
    }
    class Program
    {
      
        static void Main(string[] args)
        {
            Console.WriteLine("No Error");
        }
    }
}

You’ll receive the error code CS0505 because the C# compiler has detected that you are overriding a property Id that is not marked as either abstract or virtual in the base class.

Error CS0506 ‘ChildClass.Id’: cannot override inherited member ‘BaseClass.Id’ because it is not marked virtual, abstract, or override DeveloperPublish C:\Users\Senthil\source\repos\ConsoleApp4\ConsoleApp4\Program.cs 12 Active

C# Error CS0506 – 'function1' : cannot override inherited member 'function2' because it is not marked "virtual", "abstract", or "override"

Solution

You can fix this error in your C# program by marking the member as virtual or abstract in the base class as shown below.

using System;
namespace DeveloperPublishNamespace
{
    public class BaseClass
    {
        public virtual int Id { get; set; }
    }

    public class ChildClass : BaseClass
    {
        // This returns the error CS0505  
        public override int Id { get; set; }
    }
    class Program
    {
      
        static void Main(string[] args)
        {
            Console.WriteLine("No Error");
        }
    }
}