Dart是值传递还是引用传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart是值传递还是引用传递相关的知识,希望对你有一定的参考价值。

参考技术A 1)在dart中对于基础数据类型String、int、bool、double是值传递也就是说给传入函数内的形参赋值不会改变外部变量的入参的值
2)而对象List、Set、Map、class是引用传递
我们每次调用函数,传递过去的对象都是对象的内存地址,而不是这个对象的复制。
参数是把内存地址传过去了,如果对这个内存地址上的对象修改,那么其他位置的引用该内存地址的变量值也会修改。

因为submitPhoto中使用的局部变量photoInfoModelList的内存地址已经发生改变,此时指向的是list的内存地址

看了上面的例子可能会反驳,第一个例子为什么就不能改变外部变量,这不是不对吗?

后续修改都是0x0002222内存的修改

总结:这是一个易忽视的坑,一般我们在传递某个全局model的属性给别的方法调用时,会在这个方法中对该数据进行处理,一定想要清楚是否需要在全局对数据进行修改来决定是传入基础类型还是对象

以上是关于Dart是值传递还是引用传递的主要内容,如果未能解决你的问题,请参考以下文章

PHP对象到底是值传递还是引用传递

String是值传递还是引用传递

Java的参数传递是值传递还是引用传递?

Python 到底是值传递还是引用传递

Java中的参数传递,到底是值传递还是引用传递?

Java调用函数传递参数到底是值传递还是引用传递