jjzjj

LazyObject

全部标签

c# - 不使用空合并运算符进行延迟初始化有什么好的理由吗?

问候我今天在做一些惰性初始化代码,我想为什么不使用null合并运算符来做这件事,它更短,但后来我想这样做会有任何开销或额外成本。下面是简化的示例代码,显示了用于惰性初始化的更常见形式,然后是使用空合并运算符的形式。它们具有完全相同的结果,并且看起来是等效的。我的第一个想法是,在创建对象之后,现在可以使用??将其附加分配给自身。这不是问题吗,编译器/JIT如何优化它,是否有更邪恶的事情发生,你永远不应该用??进行延迟初始化,或者它是完全安全的,没有坏的魔力可以来自它。privateMyLazyObject_lazyObject;publicMyLazyObjectGetMyLazyObj

python - 为什么django的设置对象是一个LazyObject?

查看django.conf我注意到设置是这样实现的:classLazySettings(LazyObject):...使设置对象惰性化背后的基本原理是什么? 最佳答案 查看thissectionDjango编码风格。原因在那里解释(引用如下)。除了性能之外,第三方模块在导入时可以修改设置。应延迟访问设置以确保首先发生此配置。Modulesshouldnotingeneralusesettingsstoredindjango.conf.settingsatthetoplevel(i.e.evaluatedwhenthemoduleis