Oggi ho avuto un po 'di sorpresa quando ho cambiato il valore di una costante pubblicamente visibile in una classe statica e poi ho sostituito una vecchia copia dell'assieme con la versione appena compilata. La sorpresa è stata che il programma esistente che faceva riferimento all'assembly non ha rilevato il nuovo valore della costante. Cioè, non ho ricompilato l'eseguibile ma piuttosto ho appena sostituito quell'unico assieme.In .NET, perché le costanti vengono valutate in fase di compilazione anziché in fase di JIT?
Una descrizione completa del mio esperimento è a How constant is a constant?
devo ammettere di essere molto sorpreso da questo comportamento. Capisco cosa sta succedendo, ma non capisco why. C'è una ragione tecnica particolare per cui le costanti non possono essere raccolte al momento del JIT piuttosto che compilare il tempo? Ci sono casi in cui fare ciò potrebbe rompere le cose?
Questo è un comportamento descritto in troppi libri, blog, quindi non è così sorprendente in realtà :) –
@lex: Stranamente, ho Non ho mai avuto una discussione su di esso prima. Mi chiedo ancora * perché *, però. –
Ancora non capisco quale sia il vantaggio di cuocerlo nell'assemblaggio. – CodesInChaos