Dart中能否通过一行代码初始化List?类似C#集合初始化器
当然可以在Dart里用一行代码初始化List!不过你写的C#风格new List<int>{ 1,2,5,9 }语法在Dart里是不支持的,咱们有更简洁的专属写法:
1. 最常用的字面量初始化法(推荐)
直接用方括号包裹元素就能创建List,Dart会自动帮你处理类型推断:
// 显式指定类型 List<int> options = [1, 2, 5, 9]; // 让Dart自动推断类型(更简洁) var options = [1, 2, 5, 9]; // Dart会识别为List<int>
2. 创建不可变List
如果需要一个不能修改元素的只读List,可以用const关键字:
// 显式指定类型的不可变List final List<int> options = const [1, 2, 5, 9]; // 简化写法 const options = [1, 2, 5, 9];
注:用const声明的List完全不可变,连元素都不能修改;如果只是想禁止修改List的长度(比如不能add/remove元素,但可以修改已有元素),可以用List.unmodifiable():
var options = List.unmodifiable([1, 2, 5, 9]);
3. 基于构造函数的初始化(不推荐,除非特殊场景)
如果你一定要通过List构造函数来初始化,也可以这样写,但这种写法不如字面量简洁:
List<int> options = List<int>.from([1, 2, 5, 9]);
总的来说,Dart的集合初始化语法虽然和C#的collection initializer不一样,但同样高效简洁,字面量写法是日常开发的首选。
内容的提问来源于stack exchange,提问作者atreeon
相关产品推荐
相关产品推荐

