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

C# Error CS0507 – ‘function1’ : cannot change access modifiers when overriding ‘access’ inherited member ‘function2’

C# Compiler Error

CS0507 – ‘function1’ : cannot change access modifiers when overriding ‘access’ inherited member ‘function2’

Reason for the Error

You’ll get this error in your C# code when you attempt to change the access modifier in the method override.

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

using System;
namespace DeveloperPublishNamespace
{
    abstract public class BaseClass
    {
        virtual protected void Method1() 
        { 
        }
    }

    public class ChildClass : BaseClass
    {
        public override void Method1()
        {

        }
    }
    class Program
    {
      
        static void Main(string[] args)
        {
            Console.WriteLine("No Error");
        }
    }
}

You’ll receive the error code CS0507 because the C# compiler has detected that you are overriding the function “Method1” but changing the access modifier to public when overriding.

Error CS0507 ‘ChildClass.Method1()’: cannot change access modifiers when overriding ‘protected’ inherited member ‘BaseClass.Method1()’ DeveloperPublish C:\Users\Senthil\source\repos\ConsoleApp4\ConsoleApp4\Program.cs 13 Active

Solution

You can fix this error in your C# program by making sure that the access modifiers remain the same when overriding the inherited member.

using System;
namespace DeveloperPublishNamespace
{
    abstract public class BaseClass
    {
        virtual protected void Method1() 
        { 
        }
    }

    public class ChildClass : BaseClass
    {
        protected override void Method1()
        {

        }
    }
    class Program
    {
      
        static void Main(string[] args)
        {
            Console.WriteLine("No Error");
        }
    }
}