Le moyen privilégié pour définir les valeurs par défaut de nullable propriétés?

Je suis dans un dilemme. L' (réduit) tâche est de redessiner les données suivantes titulaire de classe

class Stuff
{
  public String SomeInfo { get; set; }
}

pour répondre à la demande que null ne doit pas être retourné. Je pense à deux façons de réaliser cela et après réflexion profonde de 15 minutes, j'ai simplement ne peut pas décider de ce qui est préféré.

Approche par le constructeur.

class Stuff
{
  public String SomeInfo { get; set; }
  public Stuff() { SomeInfo = String.Empty; }
}

Approche par la propriété.

class Stuff
{
  private String _SomeInfo;
  public String SomeInfo 
  { 
    get { return _SomeInfo ?? String.Empty; }
    set { _SomeInfo = value; }
  }
}

Noter que la création de la Trucs instances qui pourrait être fait en utilisant le constructeur ainsi que de l'initialisation, si c'est de toute importance. Pour autant que je suis informé, il n'y aura pas d'autres restrictions (mais vous savez comment les clients spécifications reflètent pas toujours la réalité).

Bien que votre première option permet de ne pas répondre à vos besoins - que je peut encore définir la propriété à la valeur null. #2 est votre seul choix réel.
Si par l'initialisation de vous dire une certaine forme de désérialisation être conscient que certaines implémentations de l'habitude d'exécuter le code du constructeur.
Un autre petit goût de #2 peut-être pour valider la saisie lors de la définition de la valeur plutôt que lors de la récupération. Si vous trouvez que vous êtes à la récupération de null/Empty valeurs très souvent, au lieu de faire le vérifier une fois/rarement lors de la configuration pourrait être préférée. EDIT: Notez que ceci suppose que vous êtes vigilant suffit pas à définir le champ de stockage à null.
Les bons points. Merci!

OriginalL'auteur Konrad Viltersten | 2013-06-12