using System;
public class Base
{
public virtual string Foo { get; }
public Base()
{
Console.WriteLine("Base()");
Foo = "value from Base()";
Console.WriteLine($"Foo = {Foo}");
}
}
public class Derived : Base
{
public override string Foo { get; } = "value from Derived init";
}
public class Test
{
public static void Main()
{
Base x = new Derived();
Console.WriteLine($"main: {x.Foo}");
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIEJhc2UKewoJcHVibGljIHZpcnR1YWwgc3RyaW5nIEZvbyB7IGdldDsgfQoJCglwdWJsaWMgQmFzZSgpCgl7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIkJhc2UoKSIpOwoJCUZvbyA9ICJ2YWx1ZSBmcm9tIEJhc2UoKSI7CgkJQ29uc29sZS5Xcml0ZUxpbmUoJCJGb28gPSB7Rm9vfSIpOwoJfQp9CnB1YmxpYyBjbGFzcyBEZXJpdmVkIDogQmFzZQp7CglwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIEZvbyB7IGdldDsgfSA9ICJ2YWx1ZSBmcm9tIERlcml2ZWQgaW5pdCI7Cn0KCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlCYXNlIHggPSBuZXcgRGVyaXZlZCgpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCQibWFpbjoge3guRm9vfSIpOwoJfQp9