J'apprends les contrats de code dans .NET et j'essaie de comprendre l'idée de constructeurs purs. La documentation des contrats de code indique:
Toutes les méthodes appelées dans un contrat doivent être pures; c'est-à-dire qu'ils ne doivent mettre à jour aucun état préexistant. Une méthode pure est autorisée à modifier les objets qui ont été créés après l'entrée dans la méthode pure.
Et la PureAttribute
documentation indique:
Indique qu'un type ou une méthode est pur, c'est-à-dire qu'il n'apporte aucun changement d'état visible.
Je comprends ces affirmations en matière de méthodes, mais qu'en est-il des constructeurs? Supposons que vous ayez eu un cours comme celui-ci:
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
Ce constructeur affecte évidemment l'état du nouvel Foo
objet, mais il n'a pas d'autres effets secondaires (par exemple, il ne manipule aucun des paramètres et n'appelle aucune méthode non pure). Est-ce un candidat [Pure]
ou non? Quelle est l'importance de placer un [Pure]
attribut sur un constructeur, et quand dois-je le faire dans mon propre code?