在DART中,如果要创建不可修改的列表,可以使用List.unModiable()或UnModifiableListView
List<int> list = [1, 2, 3];
List<int> unmodifiableList = List.unmodifiable(list);
UnmodifiableListView unmodifiableListView = UnmodifiableListView(list);
这个有什么不同?
在DART中,如果要创建不可修改的列表,可以使用List.unModiable()或UnModifiableListView
List<int> list = [1, 2, 3];
List<int> unmodifiableList = List.unmodifiable(list);
UnmodifiableListView unmodifiableListView = UnmodifiableListView(list);
这个有什么不同?
List.unmodifiable
是一个List
构造函数;它创建一个新的List
对象.它创造了原始List
的copy个,并且那个副本不能变异.更改原始List
不会影响副本.
UnmodifiableListView
是原始List
的包装器("视图"),原始List
不能通过UnmodifiableListView
进行变异.在UnmodifiableListView
号中仍然可以观察到原始List
的Mutations .
例如:
import 'dart:collection';
void main() {
var originalList = [1, 2, 3];
var unmodifiableCopy = List<int>.unmodifiable(originalList);
var unmodifiableView = UnmodifiableListView(originalList);
originalList[0] = -1;
print('$unmodifiableCopy'); // Prints: [1, 2, 3]
print('$unmodifiableView'); // Prints: [-1, 2, 3]
}