I don't understand what Intellisense is suggesting as a replacement for my existing code (pictured here) enter image description here

如果图像后来被删除,图中的智能感知建议建议替换

List<int> x = new List<int>();
x.AddRange(Enumerable.Range(0, 300));

使用

List<int> x = [.. Enumerable.Range(0, 300)];

我假设..是C#8.0中引入的范围运算符,但是没有关于这种建议用法的文档.

  • 以这种方式使用范围运算符时,是否有隐式的‘new list’?
  • 我知道……的左手边.运算符可以为空(隐含零),但我不明白如何将可枚举范围用作..的右侧.接线员.

如果有人能解释一下关于实例化一个新列表的[x..y]这个特定用法的"幕后"情况,我将不胜感激.

推荐答案

正如Jeanot Zubler所 comments 的:这是C#12的新版本collection expression,昨天与.NET8一起发布.

例如,它允许使用以下语法:

int[] row0 = [1, 2, 3];
int[] row1 = [4, 5, 6];
int[] row2 = [7, 8, 9];
int[] single = [..row0, ..row1, ..row2];

或者在您的 case 中是这样的:

List<int> x = [.. Enumerable.Range(0, 300)];

如果我理解正确的话,..是一种"扁平化"运算符(官方名称:"扩散运算符").

Csharp相关问答推荐

为什么.Equals(SS,StringComparison. ClientCultureIgnoreCase)在Net 4.8和6.0之间不同?

是否可以使用EF—Core进行临时部分更新?

REST API端点中异步后台代码执行的类型

如何使用新的Microsoft.IdentityModel.JsonWebToken创建JwtSecurityToken?

由于POST中的应用程序/JWT,出现不支持的内容类型异常

如何注册类使用多级继承与接口

当空判断结果赋给变量时,为什么会出现可能空异常警告的解引用?

无法使用[FromForm]发送带有图像和JSON的多部分请求

将FileStream的特定部分作为字节数组读取

如何在mediatr命令中访问HttpContext而不安装弃用的nuget包

如何使用类似于[SELECT*FROM&Q;&Q;WHERE&Q;]SQL查询的System.Data.Entity创建查询?

用MongoDB c#驱动程序删除和返回嵌套数组中的文档

正在try 将自定义字体添加到我的控制台应用程序

Autofac -动态实例化:手动传递构造函数

如何在C#中反序列化Java持续时间?

我是否以错误的方式使用了异步延迟初始化?

当我在Git中暂存文件更改时,它们会消失

如何在C#中用Serilog记录类路径、方法名和行编号

使用ImmutableList时,DynamicData未按预期工作

SendInput无法在C#中正确模拟键盘