gpt4 book ai didi

C#:判断一个类是否已经初始化

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:49 25 4
gpt4 key购买 nike

我不能或不想修改程序集中的许多类。在运行时的某个时刻,我想知道它们中的哪些已经被“初始化”:静态初始化器(= 静态构造函数)已经运行。

有没有办法通过反射或其他方式做到这一点?

请注意,并非程序集中的每个类都在加载程序集时进行初始化。通过这段代码可以很容易地观察到这一点:

public static class Foo
{
static Foo() { MainClass.Value = "Something"; }
public static void DoSomething() { Thread.Sleep(100); }
}

public static class MainClass
{
public static string Value = "Nothing";

public static void Main()
{
Console.WriteLine(Value);
Foo.DoSomething();
Console.WriteLine(Value);
}
}

显示:

Nothing
Something

最佳答案

如前所述HimBromBeere ,并在 this article 中确认,

A static constructor is called automatically to initialize the class before the first instance is created or any static members are referenced.

所以你需要使用你的类一次,一个属性,一个方法,等等,来初始化它......你无法控制它,你不能以编程方式调用它,如果你想知道静态已使用构造函数,您将使用该类,因此此时可以调用它...

如前所述Rango , 你可以在你的构造函数中使用一个标志,如果你真的绝对需要知道......

关于C#:判断一个类是否已经初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com