A.P*_*P.S 4 .net c# constructor garbage-collection static-constructor
我有一个简单的类,它有一个静态构造函数和一个实例构造函数.现在,当我初始化类时,调用静态和实例构造函数.在应用程序域中只引用一次静态.我可以再次调用相同的类初始化和静态构造函数再次初始化吗?我试过但它没有发生?有没有什么办法可以在类上使用垃圾收集后在main()方法中再次调用静态构造函数.
这是代码:
public class Employee
{
public Employee()
{
Console.WriteLine("Instance constructor called");
}
static Employee()
{
Console.WriteLine("Static constructor called");
}
~Employee()
{
//Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
现在在main方法调用中:
static void Main(string[] args)
{
Employee emp = new Employee();
Employee emp = new Employee();
}
Run Code Online (Sandbox Code Playgroud)
输出:
名为Instance构造函数的静态构造函数称为Instance构造函数
现在静态没有再次调用.因为它在应用程序域中被调用一次.但他们是否可以在不卸载应用程序域的情况下再次调用它.我们可以在这里使用GC类吗?
谢谢.朋友
除非你使用反射来刺激它,否则静态构造函数(或更一般地说,类型初始化程序)仅针对每个AppDomain的具体类执行一次.
请注意,对于泛型,使用不同的类型参数,您将获得不同的具体类:
public class Foo<T>
{
Foo()
{
Console.WriteLine("T={0}", typeof(T));
}
public static void DummyMethod() {}
}
...
Foo<int>.DummyMethod(); // Executes static constructor first
Foo<string>.DummyMethod(); // Executes static constructor first
Foo<string>.DummyMethod(); // Type is already initialized; no more output
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |