Search code examples
c#automatic-properties

virtual auto implemented properties backed field


Does auto implemented properties have the same backed field in base and derived classes in C# ? I have the following code:

class Employee
    {
        public virtual string Infos { get; set; }
    }

    class Engineer : Employee
    {
        public override string Infos
        {
            get
            {
                //Employee and Engineer share the same backed field.
                return base.Infos + " *";
            }
        }
    }

And in the Main class, i have the following code :

class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Engineer { Infos = "Name : Boulkriat Brahim" };
            Console.WriteLine ( employee.Infos );

        }
    }

Compiling and Running this code will print "Boulkriat Brahim *". So base.Info is equal to "Boulkriat Brahim".This mean that this.Info and Base.Info have the same value despite i create an object of type Engineer. Does this mean that they had the same backed field?


Solution

  • Yes, exactly as if you declared the properties manually. There's only one field, and all subclasses inherit it.