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

前端 未结 2 973
被撕碎了的回忆
被撕碎了的回忆 2020-12-19 12:11

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 stati

相关标签:
2条回答
  • 2020-12-19 12:45

    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");
        }
    }
    
    0 讨论(0)
  • 2020-12-19 12:55

    It is limited to the AppDomain, in other words, the variable exists as a separate value in each AppDomain.

    0 讨论(0)
提交回复
热议问题