Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
Views
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 answers
Answer question

0

Prueba esto:

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

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!