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

发布于 2024-09-14 15:58:11 字数 131 浏览 2 评论 0原文

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

相关程序集已加载到当前域中。

When I create a new AppDomain using AppDomain.CreateDomain in C#, will static constructors be called as asseblies are loaded inside the newly created AppDomain?

The assemblies in question have already been loaded into the current domain.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧城空念 2024-09-21 15:58:11

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

不过,静态构造函数为每个AppDomain调用一次,如果这是您所关心的。这与在不同的 AppDomain 中执行一次不同,新的 AppDomain 中的类型未初始化:)

请注意,类型的类型初始值设定项没有静态构造函数可能比具有静态构造函数的类型早或晚执行,并且精确的实现细节针对 .NET 4 进行了更改

No - static constructors will only be called the first time a static member is accessed or an instance is created.

The static constructor will be invoked once per AppDomain though, if that's what you were concerned about. It's not like having executed once in a different AppDomain, the types in the new AppDomain get left uninitialized :)

Note that type initializers for types without static constructors may be executed earlier or later than those for types with static constructors, and the precise implementation details changed for .NET 4.

为你拒绝所有暧昧 2024-09-21 15:58:11

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

这是摘录:

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

Check this site: http://codeidol.com/csharp/net-framework/Threads,-AppDomains,-and-Processes/AppDomains/

Here is an excerpt:

Unless you use something like thread-static fields, each AppDomain contains a copy of all static fields. All class (or static) constructors will run once within a given AppDomain. This means that if you load the same assembly in different AppDomains, each will run the class constructors, and each will contain separate values for all static fields, for example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文