Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

235
Vistas
C# ¿Cómo pasar propiedades a la clase base con valores opcionales?

En el siguiente ejemplo de código, si el cliente no establece las propiedades HighValue y LowValue, ¿cómo puedo pasar los valores predeterminados de estas propiedades a la clase base?

Si hay un error de diseño en esta configuración de ejemplo, me gustaría agradecerle de antemano por advertirme.

 public class Foo { public Foo(int scaleHigh, int scaleLow) { ScaleHigh = scaleHigh; ScaleLow = scaleLow; } public int ScaleHigh { get; } public int ScaleLow { get; } } public class Bar : Foo { public Bar(Bar bar) : base(bar.ScaleHigh, bar.ScaleLow) { HighValue = SomeHelper.ReCalculate(bar.HighValue); LowValue = SomeHelper.ReCalculate(bar.LowValue); } public int HighValue { get; } public int LowValue { get; } } public class SomeHelper { public static int ReCalculate(int scale) { return scale * 5; } } public class Client : Bar { public Client(Bar bar) : base(bar) { } public int Request(bool condition) { return condition ? HighValue : LowValue; } }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Prueba esto:

 public int LowValue { get; } = 0; //You can change these values. public int HighValue { get; } = 10;
over 4 years ago · Santiago Trujillo Denunciar

0

tiene un error en su clase de barra, ya que no tiene un constructor predeterminado, nunca podrá crear el objeto, ya que será una recursión para siempre: cada nueva instancia necesitará otra y así sucesivamente

 public class Bar : Foo { public Bar(Bar bar) : base(bar.ScaleHigh, bar.ScaleLow) { HighValue = SomeHelper.ReCalculate(bar.HighValue); LowValue = SomeHelper.ReCalculate(bar.LowValue); } public int HighValue { get; } public int LowValue { get; } }

puedes arreglarlo agregando otro constructor como este

 public Bar(int scaleHigh=0, int scaleLow=0, int highValue=0, int lowValue=0) : base(scaleHigh, scaleLow) { HighValue = SomeHelper.ReCalculate(highValue); LowValue = SomeHelper.ReCalculate(lowValue); }
over 4 years ago · Santiago Trujillo Denunciar

0

Lo siento si no entendí bien, pero creo que desea establecer valores predeterminados de Bar si no están configurados. ¿En qué caso el constructor no establecería los valores?

En el caso de que no los haya configurado en su constructor, una cosa que puede considerar es hacer que los tipos sean int? y luego establecer la variable de esta manera:

public int? HighValue => HighValue ?? (defaultValue)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda