L'effet des propriétés statiques dans un contexte Web
Question
Je dois modifier une propriété statique sur un objet de notre application Web. La propriété a une valeur par défaut codée en dur dans l'objet. Si je change la propriété static dans mon Application_Start, cela changera-t-il:
A) Toujours (enfin, jusqu'à ce que l'application soit recyclée)
B) Jusqu'à ce que l'objet soit converti en GC, puis ré-inialisé par le prochain accesseur
C) Dépend
Notez que la propriété que je définirais est juste une chaîne
La solution
La portée d'une variable statique est son AppDomain. Donc, non, les ordures ne seront pas collectées - mais si l'AppDomain est recyclé (ce qui peut arriver assez souvent dans ASP.NET), vous obtiendrez alors un "nouveau". variable statique, effectivement.
Autres conseils
D'après mon expérience avec nos applications Web, la réponse est A. Pour autant que je sache, une classe statique ne sera jamais convertie en GCed, elle dure toute la vie du processus (dans ce cas, le travailleur ASP.NET processus)
Allez pour A) Variable d'instance d'application
Pour le stockage contextuel, reportez-vous à httpContext.