Viven durante toda la vida útil de AppDomain
. (Para las aplicaciones de Windows, suele ser el tiempo de vida del proceso; puede que no sea así, según lo que esté haciendo exactamente. AppDomains
se recicla periódicamente en ASP.NET.)
No piense en variables estáticas como se comparte entre instancias: piense que pertenecen al tipo en lugar de a una instancia en particular. Esto facilita la comprensión de cómo funcionan las cosas cuando a veces nunca se crean instancias.
Por ejemplo:
class Test
{
static int x = 0;
static void Main()
{
x = 10;
Console.WriteLine(x);
}
}
No hay casos en torno a "compartir" Test.x
- pero eso está bien, porque está asociado al tipo de Test
en lugar de con casos de Test
.
Podría argumentar que esta es una distinción bastante sutil, pero es una que he encontrado útil.
Tiendo a pensarlo en términos de "asociado con el tipo _and_ compartido entre todas las instancias". –
@Joel: ¿Pero todavía no da una falsa sensación de que las instancias tienen algo que ver con eso? También podría argumentar que Test.x también se comparte entre todas las instancias de "cadena" :) –
Tiendo a pensar que los miembros estáticos no tienen NADA que ver con instancias que no sean el nombre del tipo y el manejo del modificador de acceso, entonces yo ' Estoy con Jon en lugar de Joel en este caso. –