我在 c# 应用程序中多次使用静态类和静态成员,但我确实对其内部进行了更多思考,昨天有人问我为什么静态成员首先加载到内存中?
这是正确的问题吗?如果是,那么请解释一下为什么会这样。
谢谢,
静态,或者更确切地说是类字段,存储在类本身中,不需要访问类的实例。该类在第一次使用时立即加载到内存中,并且一旦加载该类,类字段就可用。
静态成员是在运行时分配的成员,它的内存寻址是不可变的。我的意思是,一旦静态成员被初始化,它就会一直在内存中的相同位置,直到程序结束。
话虽如此,静态成员是在运行时初始化的,但不一定是初始化的第一件事。为了进一步解释,根据您的应用程序结构,可以“首先”分配诸如编译时常量字符串和其他常量之类的东西,这意味着在应用程序的内存寻址的最开始。
一个非常好的特性是速度大大提高,因为不需要“搜索”内存来调用正确的成员/方法。
静态类在加载类时初始化。它在创建任何对象之前被初始化。因为它不需要初始化任何对象。可以有任意数量的静态类和静态字段。它们都先初始化一次,以便可以随时随地使用。
希望解释有所帮助。