I just did a little experiment:
public abstract class MyClass
{
private static int myInt = 0;
public static int Foo()
{
return myInt;
}
public static int Foo(int n)
{
myInt = n;
return bar();
}
private static int bar()
{
return myInt;
}
}
and then I ran:
MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(3).ToString());
MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(10).ToString());
MessageBox.Show(MyClass.Foo().ToString());
The results I expected were 0, 3, 0, 10, 0.
To my surprise, I got 0, 3, 3, 10, 10.
How long do these changes persist for? The duration of the program execution? The duration of the function calling the static method?
They will persist for the duration of AppDomain. Changes done to static variable are visible across methods.
MSDN:
See following for more details: