Dart 最终关键字效果影响

nip*_*dha 6 dart

我知道一旦分配了值,final变量的值就无法更改。与非最终变量相比,该关键字是否会对性能final产生积极影响?

lrn*_*lrn 12

对于局部变量来说,没有任何优势。任何有能力的编译器都可以检测局部变量是否被赋值,无论它final是否被声明。

对于实例变量,很难检测是否有子类覆盖该变量,或者接口的其他实现。这意味着即使变量是最终变量,编译器也很少能相信它的任何作用。有权访问整个程序的编译器可能会检测到任何地方都没有赋值。不过,这对你的 API 来说是有影响的。

对于静态变量和顶级变量,将变量设为最终变量可能会稍有优势。这意味着本地分析可以知道即使没有看到整个程序,该值也不会改变。

总而言之,除了局部变量之外,您应该将不变的变量设为最终变量,因为这是很好的建模,而不是因为您担心性能。对于局部变量来说,这并不重要。