0
votes

C # (4) Initialisation d'objet avec des accolades bouclées: y a-t-il un moyen de faire référence à une autre propriété pendant la construction?

J'ai une classe publique personmodel code> avec des getters publics et des setters. Les propriétés concernées sont:

  • Datefbirth code>, un DateTime code>, LI>
  • Âge code> an int code>. li> ul>

    Dans le code ci-dessous, j'ai utilisé la notation sténographique sténographique Brace Brace pour créer une version abrégée de plusieurs lignes de la sortie . P>

    Age = GetAgeInYears(output.DateOfBirth),
    


0 commentaires

3 Réponses :


0
votes

Vous pouvez obtenir la date avant de définir l'objet, enregistrez-la à une variable et d'initialiser l'objet.

DateTime DOB = GetRandomDate();
PersonModel output = new PersonModel
 {
    PersonId = id,
    FirstName = GetRandomItem(firstNames),
    LastName = GetRandomItem(lastNames),
    IsAlive = GetRandomItem(aliveStatuses),
    DateOfBirth = DOB ,
    AccountBalance = ((decimal)rnd.Next(1, 1000000) / 100),
    Age = GetAgeInYears(DOB)
 };


5 commentaires

C'est en fait pire que ce que j'ai déjà. Vous avez introduit une variable intermédiaire supplémentaire dans le code, que j'avais déjà envisagé et réduit.


JGFMK Vous avez le même nombre de lignes que vous avez écrites.


J'étais après quelque chose d'apparentant à cette en infère.


Ok mais je pense que vous ne l'avez pas mentionné auparavant.


Mes excuses - ont ajouté que à la question de clarifier ce que j'étais après.



0
votes

changer votre classe quelque chose comme ça xxx

maintenant lorsque vous l'initialisez xxx

La date et DOB seront automatiquement initialisées à partir de la constructeur lui-même

MAINTENANT si vous souhaitez avoir un DOB manuel, créez un constructeur qui sauf un paramètre Param quelque chose comme celui-ci xxx

lorsque vous l'initialisez xxx


0 commentaires

1
votes

Désolé, je ne vous ai pas bien compris, c'est pourquoi je pose deux réponses ici un avec constructeur et autre avec getter et setter

Vous pouvez toujours essayer quelque chose comme ça xxx < p> en premier côté, il sera xxx

L'âge doit être automatiquement calculé en classe elle-même


0 commentaires