Значение свойства "база" в отладчике

Я отлаживаю следующий код:

class A 
{
    public virtual string X => "A";
}

class B : A
{
    public bool OwnX { get; set; } = true;
    public override string X
        => OwnX ? "B" : base.X; // (o)
}

class Program
{
    static void Main() => Console.WriteLine(new B().X);
}

И у меня есть точка останова на линии, помеченной (o). Когда точка останова попадает, я пытаюсь оценить base.X и получить ее значение "B":

strage base.X value?

Вопрос: почему бы не "A"?

Ответы

Ответ 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";
      }
}