flutter浅拷贝、深拷贝记录

//1.浅拷贝
//.add() 和 = :指向的是同一地址。
TestObject _testObject1 = TestObject();
//新建实体类对象:
TestObject _testObject2 = TestObject();
//给它赋值_testObject1
_testObject2 = _testObject1;
//_testObject2这个对象是新地址,但赋值后_testObject2对象中的引用类型变量指向的还是原来的_testObject1对象中的地址。

//场景:当有一个数据源集合和三个操作的集合
//数据源_dataList,_dataList中实体类DataBean()
List _list1 = [], _list2 = [], _list3 = [];
if(condition == 1){
_list1.add(_dataList);
}else if(condition == 2){
_list2.add(_dataList);
}else if(condition == 3){
_list3.add(_dataList);
}
//当操作并刷新_list1对象的数据时,_list2、_list3的数据也跟着改变。
//2.深拷贝
//从json数据取对象是深拷贝
//例如把对象json.decode(json.encode);String类型转换对象(对象中有多层其中包含引用类型,引用类型String只有一层,转换时hash地址会发生变化)

//或者:
for(int i = 0; i < _dataList.length;i++){
if(condition == 1){
_list1.add(DataBean.fromJson(list[i]));
}else if(condition == 2){
_list2.add(DataBean.fromJson(list[i]));
}else if(condition == 3){
_list3.add(DataBean.fromJson(list[i]));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值