Sto imparando sui contratti di codice in .NET, e sto cercando di capire l'idea dei puri costruttori. Gli stati della documentazione contratti di codice :
All methods that are called within a contract must be pure; that is, they must not update any preexisting state. A pure method is allowed to modify objects that have been created after entry into the pure method.
E PureAttribute
stati della documentazione:
Indicates that a type or method is pure, that is, it does not make any visible state changes.
Capisco queste affermazioni quando si tratta di metodi, ma per quanto riguarda i costruttori? Supponi di avere una classe come questa:
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
Questo costruttore ovviamente influisce sullo stato del nuovo oggetto Foo
, ma non ha altri effetti collaterali (ad esempio non manipola nessuno dei parametri o chiama metodi non puri). È un candidato per [Pure]
o no? Qual è il significato del posizionamento di un attributo [Pure]
su un costruttore e quando dovrei farlo nel mio codice?