È buona norma impostare getter e setter personalizzati in c #?

-1

Ho provato in questo modo a definire la proprietà definita personalizzata ma mi chiedo come gestire se una qualsiasi delle proprietà dipendenti ha un valore nullo.

public class ObtainedMarksDetail
     {
         private decimal? _percentage;
         public decimal? TheoryTotal { get; set; } 
         public decimal? PracticalTotal { get; set; }
         public decimal? TheoryFullMarksTotal { get; set; }
         public decimal? PracticalFullMarksTotal { get; set; }
         public decimal? TheoryPassMarksTotal { get; set; }
         public decimal? PracticalPassMarksTotal { get; set; }  

         public decimal? TotalPercentage
         {

             get { return _percentage=(TheoryTotal + PracticalTotal) / (TheoryFullMarksTotal + PracticalFullMarksTotal); }
             set { _percentage = value; }
         }

     }

La mia domanda è come impostare il valore predefinito per le proprietà depenute, ovvero ho provato in questo modo ma mostra errore.

 public decimal? TheoryTotal { get; set; }=0.0;

Inoltre cos'altro se TheoryTotal genera null value come posso gestire nel getter composito della proprietà TotalPercentage

  public decimal? TotalPercentage
     {

         get { return _percentage=(TheoryTotal + PracticalTotal) / (TheoryFullMarksTotal + PracticalFullMarksTotal); }
         set { _percentage = value; }
     }
    
posta IP Kaal 08.12.2018 - 03:37
fonte

1 risposta

3
public decimal? TotalPercentage
{
    get { return _percentage = (TheoryTotal + PracticalTotal) / (TheoryFullMarksTotal + PracticalFullMarksTotal); }
    set { _percentage = value; }
}

Il comportamento di questa proprietà è un po 'eccessivo, e richiede più riflessione. Se il codice client assegna il nuovo valore e immediatamente riporta indietro TotalPercentage , non restituirà lo stesso valore. Inoltre, il getter assegna (!) Un nuovo valore al campo _percentage . Questo sentirà l'odore di confusione. Questo comportamento potrebbe e dovrebbe essere progettato in uno dei seguenti modi.

  • Rendi la proprietà di sola lettura rimuovendo il setter.
  • Aggiungi la bandiera all'interno della classe che ti dirà se la percentuale viene assegnata o calcolata esternamente. Forse, imposta il flag nel setter quando il codice client assegna la percentuale. Nel getter, restituisci il valore assegnato o calcolato in base al flag.
  • Crea classi separate per percentuale assegnata manualmente e percentuale calcolata.
risposta data 08.12.2018 - 05:17
fonte

Leggi altre domande sui tag