在 Dart 中,如果要创建不可修改的列表,可以使用 List.unmodifiable() 或 UnmodifiableListView
List<int> list = [1, 2, 3];
List<int> unmodifiableList = List.unmodifiable(list);
UnmodifiableListView unmodifiableListView = UnmodifiableListView(list);
Run Code Online (Sandbox Code Playgroud)
这有什么不同?
jam*_*lin 16
List.unmodifiable是一个List构造函数;它创建一个新List对象。它创建原始的副本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]
}
Run Code Online (Sandbox Code Playgroud)