Marshal.DestroyStructure è contrassegnato con l'attributo Pure in .NET Framework ma non sono sicuro del motivo per cui ha chiaramente un effetto sul contesto che lo chiama.Perché Marshal.DestroyStructure è considerato puro?
Lo stato viene modificato (il puntatore viene liberato) anche se non modifica direttamente l'istanza del puntatore stessa.
Nella domanda è implicito: uno sviluppatore può, in buona fede, contrassegnare qualcosa come Pure anche se sa che modifica indirettamente lo stato del contesto?
Dove vedi questo attributo 'Pure'? Non è documentato in questo modo e utilizzando gli strumenti di riflessione non viene mostrato un 'PureAttribute' sul metodo –
@Peter, le annotazioni del Contratto non fanno direttamente parte degli assembly BCL; sono applicati dopo il fatto tramite assemblee di contratto esterne. –
@DanBryant Quindi i Contratti di codice stanno prendendo un'ipotesi sulla Purezza. –