es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sobrescritura de métodos en un registro heredado.

¿Es el comportamiento esperado con registros en C#10?


Console.WriteLine(new Derived1()); // =salida=> Derived1 { } Console.WriteLine(new Derived2()); // =salida=> Base record Base { public override string ToString() => "Base"; } record Derived1 : Base; record Derived2 : Base { public override string ToString() => base.ToString(); }
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, el comportamiento observado es esperado para los registros en C# 10. En el fragmento de código dado, Derived2 anula el método ToString() de Base y llama a base.ToString(), que devuelve "Base". Por lo tanto, cuando se instancia un objeto de Derived2 y se imprime en la consola, se muestra la salida "Base". Por otro lado, Derived1 no anula ToString(), y como no contiene ningún campo o propiedad además de los heredados de Base, la implementación predeterminada de ToString() muestra un inicializador de objeto vacío.

Comments are closed.