Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In .Net is the 'Staticness' of a public static variable limited to an AppDomain or the whole process?

Is one copy of a public static variable created for each AppDomain in a process or is it just one copy for the whole process? In other words if I change the value of a static variable from within one AppDomain, will it affect the value of the same static variable within another AppDomain in the same process?

like image 473
Harindaka Avatar asked Jul 03 '11 09:07

Harindaka


1 Answers

It is per application domain as proven by this example:

public class Foo
{
    public static string Bar { get; set; }
}

public class Test
{
    public Test()
    {
        Console.WriteLine("Second AppDomain: {0}", Foo.Bar);
    }
}

class Program
{
    static void Main()
    {
        // Set some value in the main appdomain
        Foo.Bar = "bar";
        Console.WriteLine("Main AppDomain: {0}", Foo.Bar);

        // create a second domain
        var domain = AppDomain.CreateDomain("SecondAppDomain");

        // instantiate the Test class in the second domain
        // the constructor of the Test class will print the value
        // of Foo.Bar inside this second domain and it will be null
        domain.CreateInstance(Assembly.GetExecutingAssembly().FullName, "Test");
    }
}
like image 122
Darin Dimitrov Avatar answered Nov 01 '22 16:11

Darin Dimitrov