当前位置: 首页 > news >正文

(四十七)Dart 中的 `identical` 函数与 `const` 关键字

Dart 中的 identical 函数与 const 关键字

identical 函数

identical 函数用于检查两个引用是否指向同一个对象。它返回一个布尔值,表示两个对象是否是同一个实例。

用法

bool identical(
  Object? a,    
  Object? b   
)

示例代码解析

以下代码展示了 identical 函数的用法:

void main() {
  // 普通对象
  var o1 = Object();
  var o2 = Object();
  print(identical(o1, o2)); // false,不同对象
  print(identical(o1, o1)); // true,同一个对象

  // 常量对象
  var o3 = const Object();
  var o4 = const Object();
  print(identical(o3, o4)); // true,共享存储空间
  print(identical(o3, o3)); // true,共享存储空间

  // 列表
  print(identical([2], [2])); // false,不同对象
  var a = [2];
  var b = [2];
  print(identical(a, b)); // false,不同对象

  // 常量列表
  print(identical(const [2], const [2])); // true,共享存储空间
  const c = [2];
  const d = [2];
  print(identical(c, d)); // true,共享存储空间

  // 不同值的常量列表
  const e = [2];
  const f = [3];
  print(identical(e, f)); // false,不同值
}

代码说明

  1. 普通对象

    • var o1 = Object();var o2 = Object(); 创建了两个不同的对象。
    • identical(o1, o2) 返回 false,因为它们是不同的对象。
    • identical(o1, o1) 返回 true,因为它们是同一个对象。
  2. 常量对象

    • var o3 = const Object();var o4 = const Object(); 创建了两个常量对象。
    • identical(o3, o4) 返回 true,因为常量对象在内存中共享存储空间。
  3. 列表

    • print(identical([2], [2])); 返回 false,因为它们是不同的列表对象。
    • var a = [2];var b = [2]; 创建了两个不同的列表对象。
    • identical(a, b) 返回 false,因为它们是不同的对象。
  4. 常量列表

    • print(identical(const [2], const [2])); 返回 true,因为常量列表在内存中共享存储空间。
    • const c = [2];const d = [2]; 创建了两个常量列表。
    • identical(c, d) 返回 true,因为它们共享存储空间。
  5. 不同值的常量列表

    • const e = [2];const f = [3]; 创建了两个不同值的常量列表。
    • identical(e, f) 返回 false,因为它们的值不同。

输出结果

运行上述代码,输出结果为:

false
true
true
true
false
true
false

注意事项

  1. 常量对象的共享存储空间

    • 使用 const 关键字声明的对象在内存中共享存储空间,即使它们被多次声明。
    • 这适用于所有常量对象,包括常量列表、常量映射等。
  2. 普通对象的独立存储空间

    • 使用 new 或直接调用构造函数创建的对象在内存中是独立的,即使它们的值相同。
  3. identical 函数的用途

    • identical 函数用于检查两个引用是否指向同一个对象,而不是检查它们的值是否相等。
    • 如果需要检查值是否相等,可以使用 == 运算符。

总结

通过使用 identical 函数,可以检查两个引用是否指向同一个对象。在 Dart 中,const 关键字声明的常量对象在内存中共享存储空间,而普通对象则在内存中独立存储。合理使用 const 关键字可以减少内存占用,提高代码效率。希望本教程对您有所帮助!

相关文章:

  • GM DC Monitor v2.0 数据中心监控预警平台-CMDB使用教程(第十篇)
  • 【图像处理基石】什么是通透感?
  • cropperjs 2.0裁剪图片后转base64提示“Tainted canvases may not be exported”跨域问题的解决办法。
  • 0x03.Redis 通常应用于哪些场景?
  • 【从0到1搞懂大模型】transformer先导:seq2seq、注意力机制、残差网络等(6)
  • C++ 数据结构之图:从理论到实践
  • React(1)基础入门
  • 【模拟电路】PIN光电二极管和APD雪崩光电二极管
  • I/O进程5
  • fio的资料
  • 基于FPGA的一维时间序列idct变换verilog实现,包含testbench和matlab辅助验证程序
  • L1 第6次课 for循环
  • Python学生信息查询
  • Lesson 11 One good turn deserves another
  • AtCoder Beginner Contest 401 E题 题解
  • 文件包含靶场
  • sql 向Java的映射
  • docker compose搭建博客wordpress
  • 基于springboot的“流浪动物管理系统”的设计与实现(源码+数据库+文档+PPT)
  • Losson 4 NFS(network file system(网络文件系统))
  • 中国田径巡回赛西安站完赛:男子跳远石雨豪夺冠,女子跳高刘肼毅折桂
  • 专访|《内沙》导演杨弋枢:挽留终将失去的美好
  • 广西:坚决拥护党中央对蓝天立进行审查调查的决定
  • 中国军网:带你揭开3所新调整组建军队院校的神秘面纱
  • 最高检公布一起离婚纠纷典型案例:推动离婚经济补偿制度落实
  • 会谈时间迟迟未定、核心议题存在分歧,俄乌“土耳其谈判”一波三折