提问人:pks 提问时间:11/15/2023 最后编辑:Jeanot Zublerpks 更新时间:11/15/2023 访问量:154
实例化 List<T 时的集合表达式是什么>
What is a collection expression when instantiating a List<T>
问:
我不明白 Intellisense 建议什么来替代我现有的代码(如图所示)
如果图像稍后被删除,图中的 Intellisense 建议建议替换
List<int> x = new List<int>();
x.AddRange(Enumerable.Range(0, 300));
跟
List<int> x = [.. Enumerable.Range(0, 300)];
我假设这是 C# 8.0 中引入的范围运算符,但没有围绕此建议用法的文档。..
- 以这种方式使用范围运算符时,是否存在隐式“新列表”?
- 我知道左手边的..运算符可以是空白(隐含零),但我不明白如何将可枚举范围用作 ..算子。
如果有人能解释 [x..y] 关于实例化新列表,我将不胜感激。
答:
1赞
Tim Schmelter
11/15/2023
#1
正如 Jeanot Zubler 所评论的那样:这是 C# 12 的新集合表达式,它昨天与 .NET 8 一起发布。
例如,它允许以下语法:
int[] row0 = [1, 2, 3];
int[] row1 = [4, 5, 6];
int[] row2 = [7, 8, 9];
int[] single = [..row0, ..row1, ..row2];
或者在你的情况下,这是:
List<int> x = [.. Enumerable.Range(0, 300)];
如果我理解正确的话,它是一种“扁平化”运算符(官方:“点差运算符”)。..
评论
new
[
..
..