Ответ 1
Может быть, вам стоит немного почитать об этом?: Operator https://docs.microsoft.com/en-us/dotnet/articles/csharp/language-reference/operators/conditional-operator
Так как значение по умолчанию OwnX истинно.
Попробуйте этот код:
B b = new B();
b.OwnX = false;
Console.WriteLine(b.X);
Объяснение этого кода: public override string X = > Собственный X? "B": base.X;
чтобы сделать его более читаемым:
public override string X
{
get {
if (Ownx == true) // this is the default value.
{
return "B";
}
else{
return "A";
}
}