Je pense que nous pouvons tous convenir que les propriétés automatiques dans C# 3.0 sont géniales. Quelque chose comme ceci:Auto-propriétés: Vérification/validation pendant le "set"
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
se réduit à ceci:
public string Name { get; set; }
Lovely!
Mais qu'est-ce que je suis supposé faire si je veux, par exemple, convertir la chaîne Name en utilisant la méthode ToUpperInvariant() lors de "setting". Ai-je besoin de revenir à l'ancien style de création de propriétés C# 2.0?
private string name;
public string Name
{
get { return name; }
set { name = value.ToUpperInvariant(); }
}
Ou y at-il une manière plus élégante d'accomplir ceci?
Je crains que vous soyez bloqué avec la méthode C# 2.0. – ChaosPandion
Je dirais que muter la valeur de telle sorte qu'un appelant externe n'obtiendra pas la même valeur qui a été définie est un "effet secondaire" et non souhaitable (par exemple: chaîne s = "blah"; foo.Name = s; (foo.Name == s) est parfois faux ce qui est inattendu pour un consommateur de votre classe) Vous devriez probablement le laisser en tant que propriété auto et exécuter ToUpperInvariant(); en interne lorsque vous devez l'utiliser ou fournir une propriété private-only avec seulement un getter qui exécute ToUpperInvariant(). – David
@David: La même pensée m'avait traversé l'esprit. Je suis encore indécis quant à la façon dont je veux qu'il fonctionne. Dans le cas précis sur lequel je travaille en ce moment, j'ai affaire à des codes à barres qui sont pour la plupart des chiffres, mais qui comportent deux caractères alphabétiques. Peu importe qu'ils soient en majuscules ou en minuscules ou pas, mais ce serait bien s'ils sont tous en majuscules, tout le temps. Donc, je pense que je suis d'accord avec "l'effet secondaire" que vous décrivez. Mais d'une manière générale, je pense que je serais d'accord avec votre évaluation. Merci pour le conseil. – Pretzel