Appearance
const深入研究
早在前面的章节,我们就提到使用const创建对象,但是Dart中const创建对象,并不是简单的创建一个对象,而是创建一个常量对象,常量对象是只读的,不能修改。这样的声明在编译器运行时,将被优化从而节省开销。所以在const 和 final之间,优先使用const声明。
dart
void main(){
const String ni = 'World'; // 创建一个常量
const String hao = 'World'; // 创建一个不同名的等值常量
print(identical(ni, ni)); // true,内存中只保留了一个对象
}
上面提到的,仅是一个创建常量字符串的方法,但实际中,我们还会创建常量对象,如:
dart
class Person {
final String name;
final int age;
const Person({this.name = "bob", this.age = 18})
}
const student = Person();
const studentb = Person();
print(identical(student, studentb)); // true,内存中只保留一个对象
所以,const在运行层面,可以极大减少对象的创建运行时内存开销,在组件中亦如此。下面一篇,我们就会说到const constructor。在整个Flutter开发过程中都是性能优化较为重要的一环。