实例化List时什么是集合表达式<T>

问题描述 投票:0回答:1

我不明白 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] 在实例化新列表方面的特定用法的“幕后”发生的情况,我将不胜感激。

c# list destructuring enumerable c#-12.0
1个回答
0
投票

正如 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)];

如果我理解正确的话,

..
是一种“扁平化”运算符(官方:“扩展运算符”)。

© www.soinside.com 2019 - 2024. All rights reserved.