最近我在采访中被问到了一个问题。
采访者问下面的问题
- 何时创建静态类的实例?清楚地创建实例意味着在内存中分配空间。如果不在内存中分配空间,我们就无法调用方法。
我很困惑,因为根据我的知识,静态类没有创建实例所以我在互联网上搜索,我发现只有一次实例创建静态类,这就是第一个静态方法被调用的时候第一次。 这是对的吗?
创建实例的第二个问题是什么? 它是CLR吗?
答案 0 :(得分:5)
静态"实例"实际得到"实例化" (即,他们的静态构造函数被调用)第一次代码引用静态类:
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!
正如其他地方所提到的,这不是技术上的实例化,但它非常接近;你只需要把它想象成实例存在"其他地方"并且运行时为您管理它。
答案 1 :(得分:1)
无法实例化静态类。换句话说,您不能使用new关键字来创建类类型的变量。因为没有实例变量,所以可以使用类名本身来访问静态类的成员。
以下列表提供了静态类的主要功能: