作者:860520430_a87a12 | 来源:互联网 | 2023-02-01 11:24
最近我在面试中被问到一个问题.
采访者问下面的问题
- 什么时候和谁创建静态类的实例?清楚地创建实例意味着在内存中分配空间.如果不在内存中分配空间,我们就无法调用方法.
我很困惑因为根据我的知识,静态类不会创建实例所以我在互联网上搜索,我发现只有一次实例创建静态类,这是第一次调用第一个静态方法时.这是对的吗?
创建实例的第二个问题是什么?这是CLR吗?
1> Clint..:
静态"实例"实际上是第一次代码引用静态类时"实例化"(即,它们的静态构造函数被调用):
void Main()
{
Console.WriteLine("Not instantiated yet!");
Stat.A();
}
// Define other methods and classes here
static class Stat
{
static Stat()
{
Console.WriteLine("Instantiated!");
}
public static void A()
{
Console.WriteLine("A was called!");
}
}
打印以下内容:
Not instantiated yet!
Instantiated!
A was called!
正如其他地方所提到的,这不是技术上的实例化,但它非常接近; 你只需要把它想象成实例存在于"其他地方"并且运行时为你管理它.
即使在引号中也不要将它们命名为"实例".它只是一个静态类构造函数调用和字段初始化./sf/ask/17360801/
这是对"实例"一词的滥用.调用静态构造函数不构成实例化.