2

所以,我有一堂课,里面有我或多或少用作常量的成员。我不能将它们分配为常量,因为它们比简单的原语更复杂。因此,这些“准常数”在我的应用程序的各个地方重复使用。诚然,我将来可能会将它们移动到配置文件中并动态加载它们。

但是,现在我很好奇 - 尽管这些是从静态类提供的,但我可以从用惰性实例化包装它们中受益吗?我问的原因是因为我没有使用每一个“准常数”,并且与构建每个“准常数”相关联的一些开销(尽管很少)。我不期望这样做有任何真正的收益,因为它不是瓶颈或任何东西,但我对最佳实践很好奇。我对静态类的内部知识知之甚少,无法自己回答这个问题。我知道访问静态成员不需要类的实例——尽管在某些时候它必须构造这些成员。所以我的问题归结为:什么时候构造静态类的静态成员?如果它们是在使用之前构建的,那么我可以从惰性实例化中受益吗?(仅在请求时实例化它们?)

4

1 回答 1

2

什么时候构造静态类的静态成员?

静态构造函数和所有初始化都发生在创建该类的第一个实例或引用任何静态成员之前。

通常,静态构造函数和所有静态成员在您第一次引用该类之前立即初始化,尽管从技术上讲,它可以在第一次使用之前的任何时间发生。

如果它们是在使用之前构建的,那么我可以从惰性实例化中受益吗?(仅在请求时实例化它们?)

您可能会从中受益,特别是如果这些值需要大量初始化或大量内存使用,并且可能并不总是使用。该类Lazy(Of T)使实现起来相当简单。

于 2013-08-01T19:07:28.840 回答