在Dart中,如果要创建不可修改的列表,则可以使用List.unmodifiable()或UnmodifiableListView
List<int> list = [1, 2, 3];
List<int> unmodifiableList = List.unmodifiable(list);
UnmodifiableListView unmodifiableListView = UnmodifiableListView(list);
这有什么不同?
最佳答案
List.unmodifiable
创建原始List
的副本,并且该副本无法更改。更改原始List
不会影响副本。UnmodifiableListView
是原始List
的包装,并且原始文件无法通过UnmodifiableListView
进行突变。仍然可以在List
中观察到原始UnmodifiableListView
的变异。
例如:
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]
}