美文网首页
1.Dart中const和final的区别

1.Dart中const和final的区别

作者: 凯司机 | 来源:发表于2020-05-24 17:33 被阅读0次

main(List<String> args) {

  // 2.1明确的声明一个字符串

  String name = 'ksj';

  // 类型推导(var/final/const)——类型推导的方式虽然没有明确的指定变量的类型,但是变量一经指定后将有自己的明确的类型

  var age = 20;

  // age = "ksj";  这种赋值报错,因为类型的不一致

  // 2.2final声明————常量

  final height = 1.88;

  // height = 2.00;

  // 2.3const声明————常量

  const address = "广州市";

  // address = "北京市"

  // const 和 final的相同点

一经赋值之后都不可以改变

  // const 和 final的区别

  // const必须赋值 ——常量值(编译期间需要有一个确定的值)

  // final可以通过计算或函数获取一个值(运行期间确定一个值)

  final time = DateTime.now();

  // const time = DateTime.now();    错误的用法

  // final开发中的用的多一些

  final p1 = Person('1');

  final p2 = Person('1');

  // 判断两个地址是否一致

  print(identical(p1, p2));

//  return false

区别:

  const p3 = const PersonA('1');

  const p4 = PersonA('1');

// const可以省略

  // 判断两个地址是否一致

  print(identical(p3, p4));

  // 返回true

 // 保持传入内容一致将会共用一个地址——节省堆内存——内容不一致的时候地址会发生改变

 // 严格意义上来说,这不是一个单例的——存放于常量静态区

}

class Person {

  String name;

  // 简单构造函数

  Person(String name) {

    this.name = name;

  }

}

class PersonA {

  // 更加推荐下面的写法

  final String name;

  const PersonA(this.name);

}

相关文章

网友评论

      本文标题:1.Dart中const和final的区别

      本文链接:https://www.haomeiwen.com/subject/wndjahtx.html