在.NET中,是否在创建新的AppDomain时调用静态构造函数?

时间:2010-08-13 07:03:18

标签: c# appdomain

当我在C#中使用AppDomain.CreateDomain创建新的AppDomain时,是否会在新创建的AppDomain中加载asseblies时调用静态构造函数?

有问题的程序集已加载到当前域中。

2 个答案:

答案 0 :(得分:20)

否 - 只有在第一次访问静态成员或创建实例时才会调用静态构造函数。

静态构造函数将按AppDomain调用一次,如果这是您所关注的。这不像是在另一个AppDomain执行了一次,新AppDomain中的类型未初始化:)

请注意,没有静态构造函数的类型的类型初始值设定项可以比使用静态构造函数的类型更早或更晚执行,并且具有精确的实现细节changed for .NET 4

答案 1 :(得分:4)

检查此网站:http://codeidol.com/csharp/net-framework/Threads,-AppDomains,-and-Processes/AppDomains/

以下是摘录:

除非您使用类似线程静态字段的内容,否则每个AppDomain都包含所有静态字段的副本。所有类(或静态)构造函数将在给定的AppDomain中运行一次。这意味着,如果在不同的AppDomain中加载相同的程序集,则每个程序集都将运行类构造函数,并且每个构造函数将包含所有静态字段的单独值。例如。