首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制静态构造函数多次运行。

强制静态构造函数多次运行。
EN

Stack Overflow用户
提问于 2022-04-10 00:53:39
回答 1查看 85关注 0票数 0

这应该是路途强制静态构造函数多次运行的原因:

代码语言:javascript
复制
typeof(Foo).TypeInitializer.Invoke(null, null);

这对我不起作用。请参见此多管乐器,该示例具有以下内容:

代码语言:javascript
复制
using System;

public static class Foo
{
    static Foo()
    {
        Console.WriteLine("inside cctor");
    }

    public static void Run() { }
}

public class Program
{
    public static void Main()
    {
        Foo.Run();                                      // runs cctor
        typeof(Foo).TypeInitializer.Invoke(null, null); // does not run cctor
        typeof(Foo).TypeInitializer.Invoke(null, null); // does not run cctor
        typeof(Foo).TypeInitializer.Invoke(null, null); // does not run cctor
    }
}

只印了一次。我以为它会跑好几次。

EN

回答 1

Stack Overflow用户

发布于 2022-07-06 16:42:49

据我所知,无论您是使用System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor方法还是使用TypeInitializer方法,NET6都不会多次运行静态构造函数,而Net和Net将不止一次运行静态构造函数。我想您可以在dotnet运行时github项目上发布请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71812999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档